2017-12-19 9 views
1

ネイティブメモリが不足している仮想サーバー(VM)に問題があります。これらのVMが実行されている: のLinux 7.2(マイポ) Wildfly 9.0.1 ジャワ1.8.0._151 JVMの引数である(異なるJVMが異なるヒープ・サイズを有する彼らは0.5Gから2Gの範囲である。) で実行:Java 8でWildfly 9を実行している間にVMがクラッシュするまでメモリ使用量が増加する

-XX:+UseG1GC 
-XX:SurvivorRatio=1 
-XX:NewRatio=2 
-XX:MaxTenuringThreshold=15 
-XX:-UseAdaptiveSizePolicy 
-XX:G1HeapRegionSize=16m 
-XX:MaxMetaspaceSize=256m 
-XX:CompressedClassSpaceSize=64m 
-javaagent:/<path to new relic.jar> 

約1ヶ月後、VMがスワップ領域をすべて使い始めると、OOM-KillerはJavaがあまりにも多くのメモリを使い、JVMの1つを強制終了させることに気付きます。

メモリの量は、Javaプロセスで使用されているが、ヒープよりも大きい+メタスペース+ -XXを使用することによって明らかにされるように圧縮さ:NativeMemoryTracking =詳細

は、このネイティブメモリ内にあるものを私に言うことができるツールが(ありますヒープダンプのようなものですが、ヒープのためのものではありません)?

jemalloc以外のネイティブ・メモリー使用(ヒープ外)にJavaヒープ使用率をマップできるツールはありますか?私はこれを達成するためにjemallocを使用しましたが、描画されているグラフには16進値のみが含まれ、人間が読めるクラス名は含まれていないので、本当に何も取得できません。たぶん私は何か間違っているか、おそらく私は別のツールが必要です。

ご意見をいただければ幸いです。

+0

おそらくネイティブのバイトバッファですか? – Holger

答えて

0

jcmdを使用できます。 -XXと

  1. Startアプリケーション:NativeMemoryTracking =要約または - XX:NativeMemoryTracking =詳細は

  2. 使用は

は「PID jcmd(ネイティブメモリー・トラッカー)NMTを監視するためにjcmd "VM.native_memoryベースライン//ベースラインを取る

jcmd" pid "VM.native_memory detail.diff //詳細を分析する必要性に基づいて使用するネイティブメモリのベースラインからの変更

関連する問題