如何识别终身空间

时间:2013-04-18 11:42:59

标签: java memory garbage-collection

我想构建一个MemoryWarningSystem,如许多文章所述: 例如如在http://www.javaspecialists.eu/archive/Issue092.html中那样。

因此,我想像这样确定终身空间:

    private MemoryPoolMXBean findTenuredGenPool() {
        for (MemoryPoolMXBean pool : ManagementFactory.getMemoryPoolMXBeans()) {

                 if(pool is tenured space)
                    return tenured

        }
    }

我已经看到了两种识别终身空间的方法

  1. 检查泳池名称是否等于“PS Old Gen”和/或“Tenured Gen”。
  2. 检查“pool.getType() == MemoryType.HEAP && pool.isUsageThresholdSupported()
  3. 问题1 :CMS Old Gen怎么样?其他终身空间怎么样?我应该将所有这些添加到终身名单列表吗?

    问题2 :这是检索终身空间的“安全”方式吗?它可靠吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

对于旧空间的HotSpot JVM可能的内存池名称

  • Tenured Gen
  • PS Old Gen
  • CMS Old Gen
  • G1 Old Gen

对于JRockit

  • Old Space