从JVM检索Tenured Generation内存池

时间:2012-04-16 21:46:04

标签: java memory-management jvm memory-pool

我正在寻找一种在JVM中找到Tunered Generation池的方法,之前我试图通过名称找到这个池:“Tunered Gen”但在某些情况下这个池命名为“PS Old Gen”。 所以我想到了更通用的方法来找到存储所有旧对象的池。

你怎么看?也许有人可以建议另一种解决方案?

    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 );
    } 

此致 马克西姆

0 个答案:

没有答案