2016-09-16 6 views
1

私はTomcatのポータルのJavaのVMのメモリ使用量をグラフ化したい出力TomcatのJVMのJavaの実メモリ使用量

Javaランタイム値が間違っている、それだけで半acurate estimatives、元を与えます

Runtime.getRuntime().maxMemory(); 

私は私がStackOverflowの上で良い解決策を見つけたと思ったが、それは、Java 7のためだけに働いた:私は1024メートルとTomcatの-Xmxを開始する場合、私はマックスを得るため

MemoryPoolMXBean testEdenBean = ManagementFactory.getMemoryPoolMXBeans().get(3); 
MemoryPoolMXBean testSurvivorBean = ManagementFactory.getMemoryPoolMXBeans().get(4); 
MemoryPoolMXBean testTemurBean = ManagementFactory.getMemoryPoolMXBeans().get(5); 

max = testEdenBean.getUsage().getMax() 
    + (testSurvivorBean.getUsage().getMax() * 2) 
    + testTemurBean.getUsage().getMax(); 

Java VisualVMが私の本当の価値を提供します: 1.073。 741.824 B正しいです。

正しい値を出力するコードを取得するにはどうすればよいですか?

答えて

0

これを試してみてください:

MemoryMXBean mbean = ManagementFactory.getMemoryMXBean(); 
    MemoryUsage heapUsage = mbean.getHeapMemoryUsage(); 
    System.out.println("Max heap memory is "+heapUsage.getMax()/1024/1024+" MBytes"); 
    System.out.println("Used heap memory is "+heapUsage.getUsed()/1024/1024+" MBytes"); 

    MemoryUsage nonHeapUsage= mbean.getNonHeapMemoryUsage(); 
    System.out.println("Max non-heap memory is "+nonHeapUsage.getMax()/1024/1024+" MBytes"); 
    System.out.println("Used non-heap memory is "+nonHeapUsage.getUsed()/1024/1024+" MBytes"); 

が、これはあなたが探していたものであるなら、私に教えてください。