JVM 内存模型以及垃圾回收
内存由 Perm 和 Heap 组成. 其中
Heap = {Old + NEW = { Eden , from, to } }
JVM 内存模型中分两大块,一块是 NEW Generation, 另一块是 Old Generation. 在 New
Generation 中,有一个叫 Eden 的空间,主要是用来存放新生的对象,还有两个 Survivor
Spaces(from,to), 它们用来存放每次垃圾回收后存活下来的对象。在 Old Generation
中,主要存放应用程序中生命周期长的内存对象,还有个 Permanent Generation,主要用
来放 JVM 自己的反射对象,比如类对象和方法对象等。
垃圾回收描述:
在 New Generation 块中,垃圾回收一般用 Copying 的算法,速度快。每次 GC 的时候,
存活下来的对象首先由 Eden 拷贝到某个 Survivor Space, 当 Survivor Space 空间满了后,
剩下的 live 对象就被直接拷贝到 Old Generation 中去。因此,每次 GC 后,Eden 内存块
会被清空。在 Old Generation 块中,垃圾回收一般用 mark-compact 的算法,速度慢些,