JVM区域分heap区和非heap区。
1)heap区:Eden Space(伊甸园),Survivor Space(幸存者区),Tenured Gen(老年代-养老区)。
2)非heap区:Code Cache(代码缓存区),Perm Gen(永久代),JVM Stack(java虚拟机栈),Local Method Stack(本地方法栈)。
HotSpot虚拟机GC算法采用分代收集算法:
1)一个对象New出来后会在Eden Space,GC会查看对象的引用,没有引用的对象就被回收,有引用的对象就进入Survivor Space
2)Survivor对象GC会定期查看, 如果对象死了,会被回收。来回检查几次,活着的对象就进入Tenured Gen。
3)Tenured Gen里面如果对象死了,也会被回收
分区的目的:
新对象比较多,但大多都是朝生夕灭的,所以直接采用标记-清理算法。
Tenured Gen生命力很强,采用复制算法。
非heap区
Perm Gen中放着类,方法的定义,
JVM stack放着参数,局域变量的引用,方法执行顺序按照栈的先入后出方式
学习并转载自 https://blog.csdn.net/aoxida/article/details/45061571