我该如何编程地查找我的PermGen空间使用情况?

25

我试图诊断在Sun的Hotspot JVM上运行时出现的java.lang.OutOfMemoryError: PermGen Space错误,并想知道我的程序在不同点使用了多少PermGen空间。是否有一种以编程方式找到此信息的方法?

2个回答

38

你可以像这样使用:

Iterator<MemoryPoolMXBean> iter = ManagementFactory.getMemoryPoolMXBeans().iterator();
while (iter.hasNext())
{
    MemoryPoolMXBean item = iter.next();
    String name = item.getName();
    MemoryType type = item.getType();
    MemoryUsage usage = item.getUsage();
    MemoryUsage peak = item.getPeakUsage();
    MemoryUsage collections = item.getCollectionUsage();
}

这将给你所有类型的内存。你感兴趣的是“Perm Gen”类型。


2
谢谢,这个可行。我正在使用MemoryPoolMXBean,其中name.equalsIgnoreCase("Perm Gen")。 - Simon Nickerson
所需信息,谢谢kgiannakakis。 - vissu

3

谢谢你帮我入门。 - Simon Nickerson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接