java - 如何识别永久空间

标签 java memory garbage-collection

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

因此,我想像这样识别tenured space:

    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:这是检索永久空间的“安全”方式吗?可靠吗?

谢谢!

最佳答案

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

  • 终身一代
  • PS 老一代
  • 老一代 CMS
  • G1 老一代

对于 JRockit

  • 旧空间

关于java - 如何识别永久空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082004/

相关文章:

c - 动态存储器C

java - 为什么老一代不好?

java - String literal 声明但不再引用是否符合 G'ed 条件?

python - 垃圾收集一个类及其实例的引用?

java - 如何构建一个 Restful Web 服务来获取和处理给定 url 的文件

java - 如何在where条件下从特殊字符的单词中获取数据?

java - 尝试开发 Android 应用程序时出现 java.lang.ClassCastException

java - Firefox ESR - 在两个不同选项卡中加载同一个小程序两次时,仅打开一个虚拟机

在设备挂起之前,Android 设备 RAM 使用量会增加,但应用程序内存不会增加

c++ - 堆数据困惑