java虚拟机内存结构
JVM内存结构共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。
堆内存
堆内存是虚拟机所管理的内存中最大的一块。Java堆划分为新生代和老年代两个区域默认比例为1:2。而年轻代又被分成Eden区、From Survivor区、To Survivor区三部分,默认情况下年轻代按照8:1:1的比例来分配;
新生代:所有新生成的对象都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个 Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor去也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,复制次数达到一定数量或大对象新生代Eden区无法装入时将被装入年老代。复制算法垃圾回收。
老年代:在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。可年老代中存放的是一些生命周期较长的对象。标记压缩法垃圾回收。
java堆和非堆内存是日后jvm调优的主战场。
个人微信公众号,欢迎关注。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)