java虚拟机内存结构

java虚拟机内存结构,第1张

java虚拟机内存结构

java虚拟机内存结构

 JVM内存结构共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。

堆内存存放对象实例,几乎所有的对象实例都在这里分配内存线程共享方法区储类信息、常量、静态变量等数据线程共享又称非堆内存,很多人愿意把方法区称为“永久代”,本质上两者并不等价,使用永久代来实现方法区而已。jdk7及以前永久代,jdk8及以后元空间。元空间不在虚拟机设置的内存中,而是使用本地内存。栈内存存储局部变量表、 *** 作栈、动态链接、方法出口等信息线程私有内地方法栈本地方法栈则是为虚拟机使用到的Native方法服务线程私有程序计数器可以看做是当前线程所执行的字节码的行号指示器线程私有

堆内存

堆内存是虚拟机所管理的内存中最大的一块。Java堆划分为新生代和老年代两个区域默认比例为1:2。而年轻代又被分成Eden区、From Survivor区、To Survivor区三部分,默认情况下年轻代按照8:1:1的比例来分配;

新生代:所有新生成的对象都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个 Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor去也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,复制次数达到一定数量或大对象新生代Eden区无法装入时将被装入年老代。复制算法垃圾回收。

老年代:在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。可年老代中存放的是一些生命周期较长的对象。标记压缩法垃圾回收。

java堆和非堆内存是日后jvm调优的主战场。

个人微信公众号,欢迎关注。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5619998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存