1

我想知道您将如何在 Java 中设计一个好的 permgen 空间字符串。根据我的研究和理解,我想出了以下几点:

例子:JAVA_OPTS='-Xmx512m -XX:MaxPermSize=256m -server -Djava.awt.headless=true'

抱歉,当我第一次发布问题时,示例没有粘贴......

4

1 回答 1

5

我对这个问题也有点不清楚,但如果你的意思是什么是用于最大 permgen 大小的好数字,这将取决于你的应用程序和加载的类/方法的数量。为了帮助确定它们,您可以使用其典型和最密集的用例运行您的应用程序,并使用 JConsole 并查看您的应用程序最终使用什么。

JConsole可以显示所有堆和永久代空间,因此您可以通过这种方式确定 MaxPermSize 所需的数量。由于它是类+方法数据,它将取决于您的应用程序加载了多少类,而不是多少实例。请注意,它也与堆大小分开(事实上,JConsole 将内存使用分类为非堆内存使用)。在我链接的 JConsole 页面上,见图 5。它是最右侧的非堆,可以单击。

在 Java 6 中,应用程序将允许来自 JConsole 的连接,无需额外配置。在 Java 5 中,您可能需要设置一些标志。它包含在 JDK 中。

作为参考,对于加载了大约 10,000 个类的应用程序,我们的 MaxPermSize 为 96m

于 2008-10-04T18:28:43.300 回答