Java 内存管理:了解年轻代、老代和永久代
在 Java 的内存管理术语中,堆分为三个主要代:年轻的、年老的、永久的。每一代都有特定的用途,并动态地与其他一代交互。
年轻代
年轻代是堆中最初分配新对象的区域。它进一步分为两个子空间:伊甸园和幸存者。大多数分配发生在 Eden 空间中。当 Eden 空间中的对象在一次或多次垃圾回收周期中幸存下来时,就会被提升为 Survivor 空间。
老年代
老年代是主要存储区域对于长寿命的对象。在幸存者空间中多次垃圾回收后幸存下来的对象将被提升到老年代。年老代还负责存储年轻代无法容纳的大对象。
永久代(非堆)
与它的名字相反,永久代Generation 不是 Oracle JVM 中堆的一部分。它是一个独立的专用空间,主要保留用于类定义、元数据和共享常量数据。在 Java 6 及更早版本中,interned 字符串也存储在永久代中,但这种情况在 Java 7 中发生了变化。
交互和关系
三个世代交互如下:
以上是Java 内存管理中的年轻代、老一代和永久代如何协同工作?的详细内容。更多信息请关注PHP中文网其他相关文章!