我想构建一个 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
}
}
我见过两种不同的方式来识别永久空间
- 检查池名称是否等于“PS Old Gen”和/或“Tenured Gen”。
- 检查是否“
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/