深入理解Java虚拟机(四)内存分配与回收策略
8. 内存分配与回收策略
-
内存分配:
- 堆内存分为新生代和老年代(默认1:2)
- 新生代分为两部分:伊甸区和幸存区(幸存0区,幸存1区)(默认8:1:1);
-
回收策略:
-
新建对象优先在新生代Eden区分配;
-
大的对象直接放在老年代;
-
Eden区空间不够时会发生Minor GC:
Minor GC的过程:复制—>清空—>互换
- Eden区满时触发第一次Minor GC,活着的对象拷贝到SurvivorFrom区;
- Eden区再次满时,再次触发Minor GC,将Eden区和From区活着的对象拷贝至To区,同时把这些对象的年龄+1;
- 清空Eden和From区,将From区与To区互换;
- 若一个对象(默认)交换15次后依旧存活,进入老年代。(年龄参数 MaxTenuringThreshold决定)
-
老年代内存满时Full GC
-