1

アプリケーション/サービスのメモリ使用率を観察していました。

私は同じ負荷を実行していますが、その時点でメモリが 1.5 から 1.7 GB の範囲にあることを Jconsole で確認しました (画像で確認できます)。突然、メモリが数秒間高くなることに気付きましたが、ここでは、ユース ケース (同じ負荷) に関して何も変更されていないことに言及したいと思います。

メモリが突然高くなる理由を知る必要があります。私のセットアップでは、メモリの理由が高くなる原因は何も変更されていません。

GC パラメータにバグはありますか??

あなたの考えが求められます。

私が使用しているGCパラメータは次のとおりです。

export GC1_OPTS="-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseAdaptiveGCBoundary" export GC2_OPTS="-XX:+ExplicitGCInvokesConcurrent "

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

0

「何が問題なのか」という質問の重要な部分が抜けています。メモリの使用量が増えていることがわかります。これは、なんらかの理由でトリガーされるアプリケーション コードのバグである可能性がありますが、ガベージ コレクションの観点からは問題ではありません。これを作成できる場合は、2 つのヒープ ダンプを作成します。1 つは 1.7 GB で、次にもう 1 つは 2.5 GB ヒープです。Eclipse MAT とデルタ モードを使用して、ダンプを比較できます。余分なオブジェクトが表示されます。その後、問題があるかどうかを確認できます。

GC 設定に関しては、「-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled」を削除します。これは通常、実際には必要のない長い一時停止時間を引き起こすためです。また、「-XX:+UseAdaptiveGCBoundary」は、このパラメーターを使用する動機は何だったのかという疑問を提起します。私は個人的にはしません。

于 2012-11-25T21:37:35.973 に答える
0

その期間に何をしているのかを知る必要があります。負荷は変わっていないかもしれませんが、通常は少量のメモリを使用するタスクが大量のメモリを使用することはめったにないことに気付くかもしれません。アプリケーションでメモリ プロファイラーを使用して、メモリがどのように使用されているか、どのコードが原因であるかを確認します。

于 2012-09-07T09:41:08.747 に答える