Java 中的 永久空间 是什么?我们的团队遇到了 永久空间 增加的问题。这种增加最终会影响性能。
我想知道 PermGen-space 是什么以及我们如何优化它的空间使用?
最佳答案
来自 http://java.sun.com/docs/hotspot/gc1.4.2/faq.html(问题 7--10)
永久代用于保存 VM 本身的反射(reflect),例如类对象和方法对象。这些反射对象直接分配到永久代中,并且它的大小独立于其他代。通常,可以忽略这一代的大小,因为默认大小就足够了。但是,加载许多类的程序可能需要更大的永久代。
从 1.4.2 开始 -XX:+PrintGCDetails 将打印有关在每次垃圾收集时收集的堆的所有部分的信息。一个完整的集合
[Full GC [Tenured: 30437K->33739K(280576K), 0.7050569 secs] 106231K->33739K(362112K), [Perm : 2919K->23739K(280576K), 0.7050569 secs], 23739K(362112K), [Perm : 2919K->23739K(280576K), 7s, 16s]
这个例子表明永久代收集很少(从收集前使用的2919K到收集后使用的2919K),永久代的当前大小为16384K。
使用命令行选项 -XX:MaxPermSize=
使用命令行选项 -XX:+TraceClassloading 和 -XX:+TraceClassUnloading
关于java - Java中的永久代空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2092347/