我想知道如何在Java中设计一个好的permgen空间字符串.根据我的研究和理解,我想出了以下内容:
例: JAVA_OPTS='-Xmx512m -XX:MaxPermSize=256m -server -Djava.awt.headless=true'
对不起,当我第一次发布问题时,示例没有粘贴......
我对这个问题也有点不清楚,但是如果你的意思是用于最大permgen大小的好数字,它将取决于你的应用程序和加载的类/方法的数量.为了帮助确定它们,您可以使用其典型且最强烈的用例运行应用程序,并使用JConsole查看您的应用程序实际最终使用的内容.
JConsole可以显示所有堆和永久生成空间,因此您可以通过这种方式确定MaxPermSize所需的数量.由于它是类+方法数据,它将是应用程序加载的类数量的函数,而不是有多少实例.请注意,它也与堆大小分开(事实上,JConsole将内存使用分类为非堆内存使用).在我链接的JConsole页面上,参见图5.它是最右边的非堆,可以单击.
在Java 6中,应用程序将允许来自JConsole的连接,而无需其他配置.在Java 5中,您可能需要设置一些标志.它包含在JDK中.
作为参考,对于加载了~10,000个类的应用程序,我们的MaxPermSize为96m