java高*之永久代何去何从?

时间:2022-06-08 17:20:59

java高*之永久代何去何从?

永久代也就是我们通常说的方法区。
java8从Hotspot JVM中删除了永久代,所以我们不再需要为永久代设置大小,也就是不用设置PermSize和MaxPermSize。
在java8之前方法区是作为堆的永久代来实现的,启动JVM时我们需要设置永久代的大小,垃圾回收器也要回收这部分区域,而且会抛出内存溢出异常。借鉴于JRockit虚拟机,java8之后 Hotspot 虚拟机从堆中彻底删除了永久代。
—把方法区中的String和静态变量移到了堆中。
—把其他的东西(比如类结构)放到了本地内存中,JVM会直接负责这部分的内存回收。

总之,我们不再需要设置PermSize和MaxPermSize;方法区的内存溢出将不再出现,除非本地内存耗光。