• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > jvm对象存储机制

jvm对象存储机制

作者:qq_33688931的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-27

qq_33688931的博客通过本文主要向大家介绍了jvm,存储,对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1 对于基础类型的变量和常量:变量和引用存储在栈中,常量存储在常量池中。
   对象的具体信息保存在堆中。常量池的速度是最快的。
   常量包括两个:一个是直接定义的string,一个是final类型的变量
   常量池:string s = "aa";   final int s = 9;
   栈中:int a = 5;
 2 对于成员变量和局部变量:
    成员变量就是方法外部,类的内部定义的变量,可以不用初始化;
    局部变量就是方法或者语句块内部定义的变量,局部变量必须要初始化。
    形式参数指的是方法参数列表中的变量,他是局部变量。
    局部变量的数据存在于栈中,栈内存中的局部变量随着方法的完成而消失。
    成员变量存储在中的对象里面,由垃圾回收器负责回收。


3 String str = "abc";--创建对象的过程
   1)首先在常量池中查找是否存在内容为“abc”的字符串对象
   2)如果不存在,则在常量池中创建“abc”,并让str引用该对象
   3)如果存在,则直接让str引用该对象
   String str = new String("abc")--创建对象的过程
   1)首先在堆中创建一个指定的对象“abc”,并让str引用指向该对象
   2)在字符串常量池中查看,是否存在内容为“abc”的字符串对象
   3)如果存在,则将new出来的字符串对象与字符串常量池中的对象联系起来
   4)如果不存在,则在字符串常量池中创建一个内容为“abc”的字符串对象,并将堆中的对象与之联系起来。
   
   String str = new String("abc");会产生几个对象?
   一个或两个。如果常量池中原来没有“abc",就是两个,如果常量池中有”abc“,就是一个;
   
 4 对于int i=2,j=2;
   首先会在栈中创建一个变量为i的引用,然后查找有没有字面值为2的地址,
   没有的话就会开辟一个存在2这个字面值的地址,然后将i指向2的地址。对于int j同样
   查找有没有字面值为2的地址,如果有的话,也是将2的地址指向j,这样就会出现
   同时指向2的两个变量。
   
   Integer it1 = 2,it2 = 2;Integer it1 = 250,it2 = 250;
   java的自动拆箱和装箱
   在自动装箱的时候,把int变为Integer的时候,存在一定的规则,当int的值在-128到127时,
  返回的不是一个新new出来的Integer对象,而是一个已经缓存在堆中的Integer对象,(系统
  已经把-128到127之间的Integer缓存到一个Integer数组中去了) 。
  当装箱的时候,首先去缓存中找,如果找到的话就直接返回引用,不用new,如果不在
  -128-127中间,会返回一个新new出来的Integer对象。
  Integer it1 = 2;
  Integer it2 = 2;
  it1==it2;//返回值true
  Integer it1 = 128;
  Integer it2 = 128;
   it1==it2;//返回值false
  Integer it1 = new Integer(2);
  Integer it2 = new Integer(2);
  it1==it2;//返回值false
   

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java内存模型与线程
  • Java监控工具、调优、调试辅助函数
  • jvm对象存储机制
  • java面试笔试需准备内容
  • java中引用的用法
  • JVM的垃圾回收机制详解和调优
  • JVM 方法调用之静态分派(详解)
  • JVM 方法调用之动态分派(详解)
  • Java JVM原理与调优_动力节点Java学院整理
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

相关文章

  • 2017-05-28java 请求跨域问题解决方法实例详解
  • 2017-05-28Java中正则表达式的使用和详解(下)
  • 2017-05-28springboot注入servlet的方法
  • 2017-05-28JDK的命令详解
  • 2017-05-28Java IO流对象的序列化和反序列化实例详解
  • 2017-05-28SpringBoot获取yml和properties配置文件的内容
  • 2017-05-28详解Spring全局异常处理的三种方式
  • 2017-05-28SpringBoot配置Email发送功能实例
  • 2017-05-28Java操作另一个Java程序使其重启的简单实现
  • 2017-05-28Intellij IDEA 配置Subversion插件实现步骤详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Collections工具类_动力节点Java学院整理
    • Java中的HashSet详解和使用示例_动力节点Java学院整理
    • Java 抽象类定义与方法实例详解
    • java集合遍历的几种方式总结及详细比较
    • Java定时器问题实例解析
    • 详解Spring Boot 部署与服务配置
    • java异步写日志到文件中实现代码
    • java中&与&&的区别
    • spring boot日志管理配置
    • 实例解析JAVA中代码的加载顺序

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有