我们如何获得有关堆栈空间和PermGen空间的内存信息?

时间:2011-12-17 09:42:00

标签: java memory

大家好,我想知道如何获得每个堆栈分配的内存大小(例如-Xss512k),

和分配给PermGen空间的内存大小(例如XX:MaxPermSize = 256m)?

我已经调查了

  1. java.lang.Runtime.totalMemory

  2. java.lang.Runtime.freeMemory

  3. java.lang.Runtime.maxMemory

  4. 但函数只返回有关堆空间的信息。

    我们如何查询有关堆栈空间和PermGen空间的信息?

1 个答案:

答案 0 :(得分:3)

您的旅程从MemoryManagerMXBean开始,在那里您可以找到所有内存池;之后,请MemoryPoolMXBean查找有关给定池的详细信息。

最简单的方法是,

List<MemoryPoolMXBean> memoryPoolMXBeans = 
                                       ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean pool: memoryPoolMXBeans) {
    out.println("pool: " + pool.getName());
    out.println("    type: " + pool.getType());
    out.println("    usage: " + pool.getUsage());
    out.println();
}

另外,看看How to determine the maximum stack size limit? - 他们有办法将参数传递给JVM。