0

1 秒あたり 1000 など、多くのリクエストを処理するステートレス Web アプリケーションを想像してみてください。処理サイクル内で作成したすべてのデータは、最後にすぐに破棄されます。アプリはシリアライゼーション/デシリアライゼーションを頻繁に使用するため、リクエストごとに約 50 ~ 200kb を作成して破棄します。GC は大量の存続期間の短いオブジェクトを破棄する必要があるため、ガベージ コレクターに大きな負担がかかる可能性があると思います。バイト配列のプールを実装して、シリアライゼーション/デシリアライゼーションの目的でそれらを再利用することは理にかなっていますか? 誰もそのような経験をしたことがありますか?

4

1 に答える 1

3

ガベージ コレクションのメカニズムは、作成された多数のオブジェクトが非常に短い期間存在することを前提に構築されています。オブジェクトの最初のプールはEden Spaceと呼ばれ (名前の由来については、この SO の回答を参照してください)、定期的に監視されます。したがって、ガベージコレクターがこれを処理できると思います。

ほとんどの (すべて?) パフォーマンスに関する質問と同様に、時期尚早の最適化を適用する前に、特定のユース ケースを測定します。並列 GC 戦略を含むガベージ コレクションのチューニングには、多数の構成が利用可能です (以下の「世界を止める」コメントに注意してください)。

于 2012-09-18T22:41:27.507 に答える