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 沒有永久代,不需要配置永久代。