Java虚拟机的堆被分为3个被称为域(generation)的主要部分,它们对应于对象的不同生存期,3个域分别是新域(新生代)(Young Generation)、旧域(老年代)(Tenured Generation)和永久域(永久代)(Perm Generation),标记为Virtual的部分被保留,在必要时才实际分配出去。
新域由Eden和两个救助空间Survivor组成。新对象通常创建于Eden中。其中一个救助空间Survivor会随时被清空,并用做另一个救助空间Survivor的目的地。当进行垃圾收集时,对象在
所有来自Eden和救助空间Survivor的活动对象都被复制到另一个救助空间Survivor。
两个救助空间Survivor之间移动,直到它们足够"老",能够被移入保存生存期较长对象的旧域(Tenured Generation)中。
永久域保存那些在虚拟机整个生存期都生存的对象。因此,该域不需要被垃圾收集程序清空。
2.垃圾回收的2种方法:引用计数、对象引用遍历。
3.JVM中通常所说的堆(Heap),实质上是新域和旧域的和,它代表了这两个区域的内存大小。
可通过jconsole命令(java监视和管理控制台)查看JVM内存的结构