JDK8為何要廢棄永久代


1、現實使用中易出問題。

  由於永久代內存經常不夠用或者發生內存泄露,爆出異常 java.lang.OutOfMemoryError: PermGen 。

    字符串存在永久代中,容易出現性能問題和內存溢出。

    類及方法的信息等比較難確定其大小,因此對於永久代的大小指定比較困難,太小容易出現永久代溢出,太大則容易導致老年代溢出。

2、永久代會位GC帶來不必要的復雜度,而且回收效率偏低。

3、Oracle可能會將HotSpot和JRockit合二為一。

 

參照 JEP122 :http://openjdk.java.net/jeps/122 ,原文截取:

Motivation

This is part of the JRockit and Hotspot convergence effort. JRockit customers do not need to configure the permanent generation (since JRockit does not have a permanent generation) and are accustomed to not configuring the permanent generation.

即:移除永久代是為融合 HotSpot JVM 與 JRockit VM 而做出的努力,因為 JRockit 沒有永久代,不需要配置永久代。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM