2

プリミティブからコレクション オブジェクトなどのデータ型の初期化されていないフィールドが多数あるエンティティ オブジェクトがあります。ただし、ほとんどの場合、すべてのフィールドが必要なわけではないため、初期化されていないままになっているという問題があります。

このようなエンティティ オブジェクトは、ユーザーの要求ごとに作成および破棄されます。だから、これがメモリやパフォーマンスの面で問題になるのではないかと少し心配しています?! 必須でない限り、フィールドは初期化されません。それで、クラス内で多くのフィールドを宣言し、初期化/使用するのはほんの数フィールドであるかどうかが本当に重要かどうかを尋ねたかったのですか?

4

1 に答える 1

1

このJavaチュートリアルページのようFields that are declared but not initialized will be set to a reasonable default by the compiler. に、初期化されていないフィールドのそれぞれが数バイト、通常はintsとオブジェクトで4バイトかかることを意味します。

とはいえ、それは特定のシステムに大きく依存します-オブジェクトが持つフィールドの数、リクエストごとに作成されるオブジェクトの数、1秒あたりのリクエスト数など。ガベージコレクターごとに異なる影響を与える可能性があります。

プロファイリングを行うことをお勧めします。現在のオブジェクトと多くのリクエストでシステム (CPU、メモリ) にかかる負荷を確認してください。次に、フィールドが少ない偽のオブジェクトをいくつか作成し、同じ負荷でテストを再実行します。違いを測定できない場合は、おそらく心配する必要はなく、余分な未使用フィールドをいくつか使用することができます。

于 2012-04-21T20:20:16.163 に答える