25

我正在尝试java.lang.OutOfMemoryError: PermGen Space在 Sun 的 Hotspot JVM 上运行时诊断错误,并且想知道我的程序在各个点使用了多少 PermGen 空间。有没有办法以编程方式找出这些信息?

4

2 回答 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”类型感兴趣。

于 2009-03-30T14:21:32.883 回答
3

试试ManagementFactory.getMemoryPoolMXBeans()

于 2009-03-30T14:05:13.047 回答