2016-09-14 11 views
-1

GCログから、ヒープ使用メモリが着実に増加していることがわかりました。完全なGCは、1日に1回でも何も言わないようなことはありません。アプリケーションはまだクラッシュしていません。私は何を探すべきですか?どんなポインタでも非常に役に立ちます。私はLinuxマシンでJava 7を実行しています。なぜ私のヒープは着実に増加し、完全なGCは起こりませんか?

+1

これは、実行する必要があるときにのみ完全なGCを実行します。完全なGCを実行していない場合は、その理由を指定していません。 –

+0

メモリリークなどありますか? – EJoshuaS

+0

メジャー、フルGCと呼ばれるテニュア生成GCは、ヒープ全体をクリーニングしていますが、おそらくまだヒープに空きメモリがあります。代わりにメジャーGCがどのくらいの頻度で発生し、どのくらいの期間、世界の一時停止が発生するのかに焦点を当てます。 –

答えて

0

Javaプロセスメモリには、JVMメモリスペース(ヒープ+その他のほとんどの領域)と非JVMメモリ(JVMでネイティブライブラリを使用している場合)が含まれています。

通常、ヒープはシャックにはなりません。メモリはJVMで再利用できるように解放されていますが、OSにはリリースされていません(GCアルゴリズムに依存します)。

JVMにはヒープサイズを制御する2つのオプションがあります。-Xms-Xmxはヒープと最大サイズの初期サイズを設定します(actually a bit more than 2 options)。

プロセスメモリのフットプリントが増加すると、メモリリークの可能性があります。

JVMでGCログを有効にするか、JVMツール(JVisualVMなど)を使用して、ライブオブジェクトの人口が増えているかどうかを確認する必要があります。

Javaでのメモリリークは、通常、「Full GC」イベントのシーケンスとして現れます。

JVMガベージコレクタがメモリをOSに戻すことを期待してはいけません。いくつかのアルゴリズムはそれを行うことはできません。一部のユーザー(例:G1)でも問題はありませんが、すぐに解決しない理由があります。

関連する問題