有什么方法可以测量我的 Java 应用程序中当前使用的永久代 (PermGen) 的大小?我不能使用 VisualVM 等外部分析工具。
更好的是估计 PermGen 中 Java 类的内存消耗。它几乎与字节码文件的大小成正比吗?
问问题
10482 次
5 回答
9
您可以使用 JDK 附带的 MemoryMXBean。但我认为没有办法从正在运行的应用程序中查询 permgen 的使用情况。关于MemoryMXBean的文档。
于 2010-11-01T18:01:39.163 回答
2
如果您不在 Windows 上,您可以尝试JDK 附带的jmap 。
于 2010-11-01T17:50:20.107 回答
1
您可以使用以下jmap
命令:
jmap [选项](连接到正在运行的进程)
jmap [选项](连接到核心文件)
jmap [option] [server_id@](连接远程调试服务器)
其中选项是以下之一:
-heap :打印java堆摘要
-permstat :打印永久代统计信息
于 2013-09-09T18:18:22.177 回答
0
PermGen 的大小与类文件的大小无关。根据 Sun 的说法,PermGen 的默认大小是 64 MB。如果您想增加它,您可以使用以下方法显式设置它:
-XX:PermSize=164m
在您的 Java 命令行或启动脚本中。这也是您无需依赖外部工具即可知道其设置的方式。
编辑:
阅读这篇文章以大致确定当前以编程方式使用了多少 PermGen(即没有外部工具):
http://frankkieviet.blogspot.com/2006/10/how-to-fix-dreaded-permgen-space.html
于 2010-11-01T17:46:55.560 回答