JVM区域总体分两类,heap区和非heap区。
heap区又分为:
- Eden Space(伊甸园)
- Survivor Space(幸存者区)
- Old Gen(老年代)
非heap区又分:
- Code Cache(代码缓存区)
- Perm Gen(永久代)
- Jvm Stack(java虚拟机栈)
- Local Method Statck(本地方法栈)
下面我们对每一个内存区域做详细介绍。
Eden Space字面意思是伊甸园,对象被创建的时候首先放到这个区域,进行垃圾回收后,不能被回收的对象被放入到空的survivor区域。
Survivor Space幸存者区,用于保存在eden space内存区域中经过垃圾回收后没有被回收的对象。Survivor有两个,分别为To Survivor、 From Survivor,这个两个区域的空间大小是一样的。执行垃圾回收的时候Eden区域不能被回收的对象被放入到空的survivor(也就是To Survivor