Java 記憶體管理:了解年輕代、老代和永久代
在Java 的記憶體管理術語中,堆分為三個主要代:年輕的、年老的、永久的。每一世代都有特定的用途,並動態地與其他世代互動。
年輕代
年輕代是堆中原先分配新物件的區域。它進一步分為兩個子空間:伊甸園和倖存者。大多數分配發生在 Eden 空間。當 Eden 空間中的物件在一次或多次垃圾回收週期中倖存下來時,就會被提升為 Survivor 空間。
老年代
老年代是主要儲存區域對於長壽命的物件。在倖存者空間中多次垃圾回收後倖存的物件將被提升到老年代。年老代也負責存放年輕代無法容納的大物件。
永久代(非堆)
與它的名字相反,永久代Generation 不是 Oracle JVM 中堆的一部分。它是一個獨立的專用空間,主要保留用於類別定義、元資料和共享常數資料。在 Java 6 及更早版本中,interned 字串也儲存在永久代中,但這種情況在 Java 7 中發生了變化。
互動與關係
三個世代互動如下:
以上是Java 記憶體管理中的年輕代、老一代和永久代如何協同工作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!