Java8为什么要将永久代替换成Metaspace 字符串存在永久代中,容易出现性能问题和内存溢出。类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。Oracle 可能会将HotSpot 与 JRockit 合二为一,JRockit没有所谓的永久代。