堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。【面试题详解】

今天爱分享给大家带来堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。【面试题详解】,希望能够帮助到大家。
堆里面分为新生代和老生代(java8 取消了永久代,采用了 Metaspace),新生代包 含 Eden+Survivor 区,survivor 区里面分为 from 和 to 区,内存回收时,如果用的是复 制算法,从 from 复制到 to,当经过一次或者多次 GC 之后,存活下来的对象会被移动 到老年区,当 JVM 内存不够用的时候,会触发 Full GC,清理 JVM 老年区 当新生区满了之后会触发 YGC,先把存活的对象放到其中一个 Survice 区,然后进行垃圾清理。因为如果仅仅清理需要删除的对象,这样会导致内存碎 片,因此一般会把 Eden 进行完全的清理,然后整理内存。那么下次 GC 的时候, 就会使用下一个 Survive,这样循环使用。如果有特别大的对象,新生代放不下, 就会使用老年代的担保,直接放到老年代里面。因为 JVM 认为,一般大对象的存 活时间一般比较久远。

人已赞赏
Java

内存模型以及分区,需要详细到每个区放什么。【面试题详解】

2021-1-5 11:14:54

Java

GC 的两种判定方法是什么?【面试题详解】

2021-1-5 11:17:27