首頁  >  文章  >  Java  >  為什麼 JDK 8 中刪除了 PermGen?

為什麼 JDK 8 中刪除了 PermGen?

Barbara Streisand
Barbara Streisand原創
2024-11-15 04:53:02842瀏覽

Why Was PermGen Removed in JDK 8 and What Are the Implications for Java Developers?

JDK 8 中刪除 PermGen:原因和影響

JDK 8 中的 Java HotSpot 虛擬機取消了對 MaxPermSize 參數的支持,引起了開發人員的擔憂。了解此決定背後的原因對於最大程度地減少任何潛在影響至關重要。

忽略 MaxPermSize 選項的原因

PermGen(永久代),JVM 內的記憶體空間,先前儲存的靜態資料和元資料。然而,有幾個缺點導致它被刪除:

  • 固定大小限制:PermGen 的靜態大小使得有效調整變得困難。
  • 不透明且難以調試:儲存在 PermGen 中的熱點類型是 Java 對象,這使得它們難以調試和解決問題。
  • 垃圾收集的複雜性:元資料迭代器和特殊處理對於完整 GC,增加了複雜性。
  • 未來改進的限制: PermGen 限制阻礙了旨在增強 JVM 性能的改進。

PermGen 刪除的後果

PermGen 的消除已被Metaspace 取代,這是一個具有鮮明特徵的新空間:

  • 支援動態調整大小:Metaspace是動態調整大小的,消除了明確調整的需要。
  • 類別載入器生命週期關聯:元空間儲存與類別載入器關聯的數據,符合它們的生命週期。
  • 快速分配與最小化回收:Metaspace 線性分配,無需單獨回收,最佳化效能。
  • 最佳化垃圾回收:Metaspace 的設計消除了垃圾回收過程中的重定位和壓縮,提高了整體 GC 效率。

調整 MetaSpace

雖然 Metaspace 預設是動態調整大小的,但可以使用 -XX:MaxMetaspaceSize 標誌進行調整以限制其最大大小。 -XX:MetaspaceSize 標誌(如果指定)定義其初始大小。

結論

忽略 JDK 8 中的 MaxPermSize 選項是解決限制和啟用的必要步驟未來的最佳化。 MetaSpace是PermGen的後繼者,在靈活性、效能和GC效率方面具有顯著優勢,為Java應用程式提供了更具擴展性和可靠性的平台。

以上是為什麼 JDK 8 中刪除了 PermGen?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn