2

以下のように、メモリ不足の例外をスローしたアプリケーションを分析しようとしています。

java.lang.OutOfMemoryError: 新しいネイティブ スレッドを作成できません

少しグーグルで調べてみると、これは c ヒープが使い果たされたことが原因である可能性があることがわかりました。GC ログを確認したところ、ヒープ メモリが利用可能であり、それが原因ではありません。c ヒープのメモリ使用量を分析する必要があります。この種の分析を提供するツールはありますか。

ヒープ (若い世代 / 古い世代) がいっぱいになると、ガベージ コレクションによってメモリが解放されますが、c ヒープがいっぱいになるとどうなりますか。ここで JVM/ はどのように空きメモリになりますか?

編集:アプリケーションが処理できる数よりもはるかに少ないスレッド数を確認しました。したがって、ここではスレッドが原因ではないようです。この例外は、スレッド数が増加したときではなく、中程度の負荷と中程度のスレッド数でアプリケーションが非常に長い間稼働していたときに発生します。

4

1 に答える 1

0

JNI を使用している場合 (または JNI を使用するプログラムを呼び出している場合)、ネイティブ コードでメモリ リークが発生している可能性があります。特に C と C++ はガベージ コレクションを行わないため、これは偶発的に発生しやすくなります。

于 2013-11-10T20:32:09.423 に答える