JVM(3)—运行时内存
一 运行时内存

(1)Eden区:新生对象出生地。Java虚拟机使用新生代中的Eden区和其中的一块from/to区。在经过一次Minor GC之后,把Eden区中和survivor中还存活的对象一次性复制到另一块survivor空间上,最后清理掉刚才用过的survivor区和Eden区。这些存活下来的对象,在达到一定的年龄之后或者survivor区满的时候会直接被送如老年区。
(2)survival from/to:和Eden区同在新生区,一块为from,一块为to,这两个区在发生一次Minor GC后会直接交换。一些活得久的对象会被移入老年区。
(3 年老代:使用标记整理算法,当年老代容量满的时候,会触发一次major GC,回收年老代和年轻代中不再被使用的对象资源。MajorGC会产生内存碎片,为了减少内存损耗,需要进行合并或者标记出来方便下一次直接分配。
(4)永久代:主要保存class和meta(元数据)的信息,Java1.8以后,移除了永久代,使用元空间进行代替。元空间并不在虚拟机中,而是本地内存。类的元数据放入native memory,字符串池和静态变量放入Java堆中。
浙公网安备 33010602011771号