2012-03-27 7 views

答えて

10

ここでは、定期的に我々のアプリのメモリ使用量をログに記録することを私たちは持っているコードの部分からの抜粋です:

import java.lang.management.GarbageCollectorMXBean 
import java.lang.management.ManagementFactory 
import java.lang.management.MemoryPoolMXBean 
import java.lang.management.MemoryUsage 

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); 
log("Heap", ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()); 
log("NonHeap", ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage()); 
List<MemoryPoolMXBean> beans = ManagementFactory.getMemoryPoolMXBeans(); 
for (MemoryPoolMXBean bean: beans) { 
    log(bean.getName(), bean.getUsage()); 
} 

for (GarbageCollectorMXBean bean: ManagementFactory.getGarbageCollectorMXBeans()) { 
    log(bean.getName(), bean.getCollectionCount(), bean.getCollectionTime()); 
} 
1

あなたはVisualVMは、すべてのJDKで行くのJavaプロファイラを試すことができます。あなたは "bin"フォルダにそれを見つけるでしょう。

+0

私はVisualVMについて知っており、問題が発生しているときに問題を積極的にデバッグしているときに使用しています。しかし夜間にはいくつかの問題が発生します。つまり、後で処理するためにどこかにログを記録する必要があります。 もちろん、夜間はVisualVMアプリを開いたままにしておくことができますが、ログは永久にアクセス可能でシステム上のすべてのユーザーがアクセスでき、自分のコンピュータには結び付けられていないので、私が探している長期的な解決策ではありません:) –

関連する問題