検索

ホームページ  >  に質問  >  本文

java - 正常的应用多久一次Full GC?

我查看我们服务器的状态,半个月发生了900+次full gc,大约20分钟一次full gc,这是正常的吗?或者说优化到多久一次会比较合理?

天蓬老师天蓬老师2802日前1873

全員に返信(3)返信します

  • PHPz

    PHPz2017-04-18 10:50:22

    最適化されていませんが。ただし、これを最適化するには、実際のビジネス ニーズとビジネス能力に基づいてサポートする必要があると感じています。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:50:22

    Java アプリケーションのヒープ サイズと QPS を確認しますが、最初は 20 分ごとにフル GC を確認すると、正常ではないように見えます

    返事
    0
  • PHPz

    PHPz2017-04-18 10:50:22

    JVM の最適化については何時間でも議論できます。ここでは、体系的な詳細には触れずに、いくつかの簡単な意見を述べます。

    最初に: フル GC が頻繁に発生することが問題です。合計メモリと古い世代の設定が小さすぎるかどうかを確認してください。
    主にパラメータ -Xmx と -Xmn に依存しますが、小さすぎると必然的に gc が頻繁に発生します。

    2 番目: 次のパラメーターを追加します
    -verbose.gc -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintTenuringDistribution - Xloggc:/data/log/xxx/xxx-gc.log -XX:+PrintGCDetails
    各 gc 後に古い世代にどのくらいのスペースが残っているかを確認する 一般的に、古い世代のスペースは 2 ~ 2.5 倍に設定されます。 gc 後のメモリはより適切な値です。
    同時に、このログを通じて、新しい世代に十分な gc がないまま、古い世代に大量のオブジェクトが入っているかどうかを確認できます。新世代でリサイクルできるオブジェクトが旧世代に入ると必然的にフルGCが多発します

    3 番目: コード理由ダンプ メモリ
    jmap -dump:live,format=b,file=xx.bin [pid]
    次に、MAT (http://www.eclipse.org/mat/) を通してそれを確認します。ツール 解放されていない大きなメモリはどれですか?

    返事
    0
  • キャンセル返事