学习JVM的分布情况
声明,来源于杜老师学习总结
- 首先JVM存储分为栈内存、堆内存和方法区内存
- 栈内存主要存取相应的引用地址和变量地址
- 方法区主要存储.class文件
- 堆内存主要存储实例变量、对象
- 三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器机制主要针对的是堆内存。
有点抽象,拿老杜的图来讲一下会比较清晰
int i=10;
Student s=new Student();//Student 对象包含age、no、sex等变量
用户通过调用s引用的地址,来访问堆内存的实例变量和具体对象,可以说堆内存主要是为了存储对象,而栈中主要存储一些基本数据类型变量和引用。
扩展:
1.成员变量分为实例变量和静态变量,实例变量是对象级别的变量,又被称为对象变量,new运算符的作用就是创建对象,在JVM堆内存中开辟新的内存空间,实例变量因为是对象级,所以不能通过类名.的形式直接访问,必须通过创建对象来访问。静态变量其实可以理解为就是带static的变量,可以被类型.直接访问。
2.变量可分为局部变量和成员变量
(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上
(2)在内存中的位置不同
成员变量:在堆中
局部变量:在栈中
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用
引用自HappyWang_
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。