微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM的基础学习之路一

学习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] 举报,一经查实,本站将立刻删除。

相关推荐