5

我想构建一个 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()

问题 1:CMS Old Gen 怎么样?那么其他终身职位呢?我应该将它们都添加到终身姓名列表中吗?

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

谢谢!

4

1 回答 1

1

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

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

对于 JRockit

  • Old Space
于 2013-04-18T12:56:13.683 回答