1

最大ヒープ サイズが 4 ギガで、GC が GC 間隔で-Xms4096m -Xmx4096m -Xmn1024m構成されたアプリケーションを実行しています。-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50Dsun.rmi.dgc.server.gcInterval=43200000 -Dsun.rmi.dgc.client.gcInterval=43200000

突然、アプリケーションがメモリ不足の例外をヒープし、同時にスレッド ダンプとヒープ ダンプを取得しました。スレッド ダンプを分析すると、hashMap と arrayList に何らかの値が作成されるため、スレッドがスタックします。ByteArrayOutStream はスレッドの 1 つでロックを作成しました。

Eclipse メモリ アナライザー ツールでヒープ ダンプを分析すると、bytearray オブジェクトがほぼ 1 ギグのヒープを占めていることが明確に示されます。GCViewer からは、秒単位でピークがあることがわかります。バイト配列オブジェクトが突然 1 ギガのスペースを使用した理由がわかりません。誰かが犯人を絞り込むのを手伝ってくれませんか。

-- アプリケーション サーバー - Weblogic 12c

4

1 に答える 1

1

Eclipse メモリ アナライザー ツールでヒープ ダンプを分析すると、bytearray オブジェクトがほぼ 1 ギグのヒープを占めていることが明確に示されます。

MAT の GC ルート機能への最短パスを使用して、そのバイト配列に保持されている参照を確認します。

于 2016-10-12T07:57:44.230 に答える