精彩牛耳,用心缔造

牛耳教育丨Java开发稳步进阶之JVM内存区域

作者: 编辑: 来源: 发布日期: 2020.03.27
信息摘要:
Java语言最重要的特点之一:跨平台使用,正是由于JVM的存在。想要Java开发稳步进阶,学JVM这条路绕不开。为什么要学JVM我们都知道,…

Java语言最重要的特点之一:跨平台使用,正是由于JVM的存在。想要Java开发稳步进阶,学JVM这条路绕不开。

1

为什么要学JVM

 我们都知道,要做Java开发,必须在你的电脑上安装JDK才行,安装JDK之后里面会有一个JRE的目录,JRE提供了软件环境----JVM。

在开发过程中当我们出现内存泄漏、内存溢出的时候我们不应该想到-Xms去设置或者栈的-Xss或者restart来解决,而是更应该去想想,为什么会出现?什么导致?怎么优化?

JVM是什么?

JVM,即Java Virtual Machine ,Java虚拟机  运行在操作系统之上的虚拟的计算机 。我们主要研究的是 HotSpot VM   JDK自带的虚拟机,这个虚拟机有两个很好的优点:准确式GC  +  热点代码探测技术。所谓准确式GC,就是让JVM知道内存中某位置数据的类型什么。比如当前内存位置中的数据究竟是一个整型变量还是一个引用类型。这样JVM可以很快确定所有引用类型的位置,从而更有针对性的进行GC roots枚举。JVM进行一段代码是不是热点代码,是不是需要触发即时编译,这样的行为称为热点探测。Java语言最重要的特点之一:跨平台使用,正是由于JVM的存在。

Jvm虚拟机的内存结构

 JVM虚拟机将其内存分为程序计数器、虚拟机栈、本地方法栈、java堆、方法区。

2

我们看看上面图片,当文件被加载之后,会变成一个JVM进程 而字节码文件就运行在JVM进程内。开启一个线程就独占一块内存区域, 彼此独立。分区只考虑线程安全问题,线程共享不安全,存在线程对于资源得争夺。

你真的了解方法区别吗?

方法区实际上是属于共享内存区域,Java源文件反映的信息都叫类信息,Java源文件会被编译成二进制文件加载到JVM去执行。比如:要去拿类对象,通过Student.class,类对象存在方法区,实际上拿到的是方法区的引用。

     这里多提一点,方法区也存在垃圾回收,但是回收率低,回收主要针对常量池的回收,和类型卸载。当方法区无法满足内存需求时,会报OOM。

在共享区画堆内存,这个大家比较了解了:

Student stu = new Student();

new 出来得对象存在堆里面,stu是存在栈里面,这里提到的堆就是堆区。


对于绝大多数应用来说,这块区域是 JVM 所管理的内存中最大的一块。线程共享,主要是存放对象实例和数组。内部会划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer, TLAB)。可以位于物理上不连续的空间,但是逻辑上要连续。

试想,堆中存储了对象,到底存的是什么?Java对象在内存中的布局?

3

先运行int num = 1; 不会存num的名称,而是存1。然后是存  marsLee,不是名称,而是引用堆区的地址。

     元信息保存在方法区,元信息(模板)在堆区都有实例存储。静态变量和方法都存在方法区。存储对象只是存储实例对象的值,名称不会存。

     那对象怎么鉴定呢?通过对象头object header,包含Mark Word(标记字段)和 Klass Pointer(类型指针)

     ✅Klass Pointer,即是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。

     ✅Mark Word,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。

        牛耳教育,专注高端IT职业教育20年。采用就业反驱的方式设计课程体系及考核标准,以锻造标准IT职业人为目标,拥有专业完善的人才培养体系、权威的课程体系与先进的IT教育管理模式。

     为更好的适应技术的革新与企业人才的精细化需求,不但开设有《Java全栈开发》、《Web前端开发》、《软件测试》、《平面设计》、《室内设计》等主流课程,更有紧贴前沿技术的《嵌入式智能设备应用开发》、《Python+人工智能》、《Java+大数据》、《UI设计》、《游戏动漫设计》等热门课程,极大的解决了企业新技术人才的困乏,也成为引领行业技术革新的标榜。

     通过公共基础课、专业技能课、职业素质课、项目实战课的“四位一体”综合教学,牛耳学子除了扎实的专业技术、丰富的项目经验更有高情商、高素质,好口才,在团队里倍受欢迎,面试时脱颖而出,成为IT企业青睐的综合型IT人才。

牛耳推荐资讯
牛耳成长故事丨你是我见过的最差的学生,也是最好的学生

牛耳成长故事丨你是我见过的最差的学生,也是最好的学生

第一次见到小陈,是在我们教学楼的了楼梯口,他一边吃着包子嘴里还停的念叨着:“糟糕了,第一天上课就迟到,早餐也没吃完,太倒霉了。”当时我看到这个学生的时候心里就在想:”这不会是我们校区的学生吧?“第二次见到小陈,是在咨询办公室里。他一个人关着门在咨询老师的办公室里,身体还斜靠在椅子,手机放着很大......
2020-05-15
做好这四件事,线上学习依然可以高效

做好这四件事,线上学习依然可以高效

一场突如其来的疫情似乎让一切放慢了脚步,开学时间延迟,但是“延迟不延学”,深圳、广州、武汉、杭州、北京,湖北、云南、江苏……疫情期间,全国20多省市,通过腾讯教育为学校搭建在线课堂。目前,已有百万教师使用腾讯教育在线课堂,助力数千万学生“不停学”。不仅如此,钉钉更是因为线上教学的原因“惨遭一星好......
2020-05-14
长沙Java培训-长沙Java培训学校

长沙Java培训-长沙Java培训学校

长沙Java培训班与企业停止专业对口的项眼关作,帮助学生挑前顺应严重剧烈的计算机工程设计,把实际常识的教育与实践项眼的展开融为一体,使得学习效力更高。按照长沙Java培训机构讲授品质凹凸比较是比较专业的,由于不但针对长沙Java培训学校的讲授方面,还摸清了各家培训机构的教育重点方向。长沙Java培训学校课程安......
2020-05-08

咨询热线

400-0731-162
  
    • *

    • *