基本数据类型的成员变量放在jvm得哪块内存区域里?
来源:互联网 发布:卷睫盼 知乎 编辑:程序博客网 时间:2024/06/05 01:08
java虚拟机栈是线程私有的,生命周期跟线程相同,每个方法调用的时候都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法调用的过程,就代表了一个栈帧在虚拟机栈中入栈到出栈的过程,当进入一个方法时,这个方法在栈中需要分配多大的内存都是完全确定的,方法运行时不会改变局部变量表的大小——《深入理解java虚拟机第二版》
很多java程序员一开始就被网上的一些教程所误导:基本数据类型放在栈中,数组和类的实例放在堆中。 这个说法不准确,事实上,如上面的全局变量i,他是存放在java堆中。因为它不是静态的变量,不会独立于类的实例而存在,而该类实例化之后,放在堆中,当然也包含了它的属性i。
如果在方法中定义了int i = 0;则在局部变量表创建了两个对象:引用i和0。 这两个对象都是线程私有(安全)的。 比如定义了int[] is = new int[10]. 定义了两个对象,一个是is引用,放在局部变量表中,一个是长度为10的数组,放在堆中,这个数组,只能通过is来访问,方法结束后出栈,is被销毁,根据java的根搜索算法,判断数组不可达,就将它销毁了。
作者:二狗
链接:https://www.zhihu.com/question/34859361/answer/67412187
来源:知乎
0 0
- 基本数据类型的成员变量放在jvm得哪块内存区域里?
- java里的静态成员变量是放在了堆内存还是栈内存
- java里的静态成员变量是放在了堆内存还是栈内存
- java里的静态成员变量是放在了堆内存还是栈内存
- 【14】Java内存深入理解:java里的静态成员变量是放在了堆内存还是栈内存
- jvm里的内存区域
- 在spring.xml中向类里的成员变量注入得注意什么
- JVM的内存区域
- JVM的内存区域
- java中如何理解多个对象共享同一个静态成员变量(多个实例的static变量会共享同一块内存区域)
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- JVM的内存区域划分
- MyBatis 学习
- 更换手机号事情
- c#的chart悬停选定数值操作
- springMVC +Mybatis +spring aop 实现用户系统操作日志记录
- Java调用cmd命令行并返回执行结果
- 基本数据类型的成员变量放在jvm得哪块内存区域里?
- 用GSON解析Json格式数据
- Altium Designer14如何由原理图得到PCB(3)
- 1006. Sign In and Sign Out (25)
- 通过手机访问电脑上Apache的端口
- webView:decidePolicyForNavigationAction:request:frame:decisionListener
- 【Android 开发】TextView的跑马灯效果
- 菜鸟学习设计模式的心得
- mysql -5.7 安装教程(创建data)