如何确定Java应用程序中PermGen的大小(即以编程方式)?
-
28-09-2019 - |
题
-
有什么方法可以测量Java应用程序中永久生成(PermGen)当前使用的大小?我无法使用外部配置工具,例如VisualVM。
-
更好的方法是估算PermGen中Java类的内存消耗。它几乎与字节码文件的大小成正比吗?
解决方案
您可以使用JDK附带的MemoryMXBean。但是我不认为有一种方法可以从正在运行的应用程序中查询permgen的使用情况。 关于 MemoryMXBean 的文档。/ p>
其他提示
如果您不在Windows上,则可以尝试 jmap 。
您可以使用jmap
命令:
jmap [选项] (以连接到正在运行的进程)
jmap [选项] (以连接到核心文件)
jmap [选项] [server_id @] (以连接到远程调试服务器)
其中选项是以下之一:
-heap:打印Java堆摘要
-permstat:打印永久代统计信息
PermGen的大小与类文件的大小无关。根据Sun,PermGen的默认大小为64 MB。如果您希望增加它,可以使用以下命令进行显式设置: 通用标签
在Java命令行或启动脚本中。这也是您无需依赖外部工具就能知道其设置的方法。
编辑:
阅读本文可确定当前以编程方式(即没有外部工具)使用了多少PermGen:
http://frankkieviet.blogspot。com / 2006/10 / how-to-fix-dreaded-permgen-space.html
不隶属于 StackOverflow