Java 从JVM检索永久生成内存池
我正在寻找一种在JVM中查找Tunered生成池的方法,之前我尝试通过名称“Tunered Gen”查找此池,但在某些情况下,此池命名为“PS Old Gen”。 所以我考虑了一种更通用的方法来找到存储所有旧对象的池 你觉得怎么样?也许有人可以提出另一种解决方案Java 从JVM检索永久生成内存池,java,memory-management,jvm,memory-pool,Java,Memory Management,Jvm,Memory Pool,我正在寻找一种在JVM中查找Tunered生成池的方法,之前我尝试通过名称“Tunered Gen”查找此池,但在某些情况下,此池命名为“PS Old Gen”。 所以我考虑了一种更通用的方法来找到存储所有旧对象的池 你觉得怎么样?也许有人可以提出另一种解决方案 public MemoryPoolMXBean findTuneredGenerationMemoryPool(){ List<MemoryPoolMXBean> memoryPoolsList =
public MemoryPoolMXBean findTuneredGenerationMemoryPool(){
List<MemoryPoolMXBean> memoryPoolsList = new ArrayList<MemoryPoolMXBean>();
for(MemoryPoolMXBean pool: ManagementFactory.getMemoryPoolMXBeans()){
if (pool.isCollectionUsageThresholdSupported() && pool.getType().equals( MemoryType.HEAP )){
memoryPoolsList.add( pool );
}
}
Collections.sort(memoryPoolsList, new Comparator<MemoryPoolMXBean>(){
@Override
public int compare(MemoryPoolMXBean pool, MemoryPoolMXBean otherPool) {
return otherPool.getType().compareTo( pool.getType() );
}});
int oldestGenPoolIndex = memoryPoolsList.size() - 1;
return memoryPoolsList.get( oldestGenPoolIndex );
}
公共MemoryPoolMXBean findTuneredGenerationMemoryPool(){
List memoryPoolsList=新的ArrayList();
对于(MemoryPoolMXBean池:ManagementFactory.getMemoryPoolMXBeans()){
if(pool.isCollectionUsageThresholdSupported()&&pool.getType().equals(MemoryType.HEAP)){
memoryPoolsList.add(池);
}
}
Collections.sort(memoryPoolsList,newcomparator(){
@凌驾
公共int比较(MemoryPoolMXBean池、MemoryPoolMXBean其他池){
返回otherPool.getType().compareTo(pool.getType());
}});
int oldestGenPooldIndex=memoryPoolsList.size()-1;
返回memoryPoolsList.get(oldestGenPoolIndex);
}
问候,,
Maxim要求审查工作代码的问题属于代码审查(尽管您提出此问题时代码审查可能不存在)。但是这里有一个提示:如果您已经强制池类型等于MemoryType.HEAP,那么按池类型排序就没有意义了。