2016-12-27 16 views
1

IntelliJで提供されているコード検査を自分のコードで実行しようとしていて、new Boolean("true")を呼び出してパフォーマンスの問題が報告されました。
IDEでの説明はブールコンストラクタはパフォーマンスの問題を引き起こす可能性がありますか?

として与えられているが、新しいBooleanオブジェクトをインスタンス化しようとする試みを報告します。 新しいブールオブジェクトを作成することはめったに必要ではなく、多くの場合はパフォーマンスが低下する可能性があります( )。

この声明がパフォーマンス上の問題の原因となる理由またはその理由を理解したい場合は、

+1

なぜ、具体的に新しいインスタンスが必要なのですか?文字通り、2つの値しか取ることができないので、複数のインスタンスでそれを持つ点は何ですか。あなたはもっと多くのオブジェクトを割り当てているだけです。 –

+1

http://www.programmr.com/blogs/two-things-every-java-developer-should-know-about-booleans –

+0

@JeroenVannevelを参照してください。基本的なデータ型に変更できますが、わかりやすくなぜそれがパフォーマンスに打撃を与えるのですか? –

答えて

3

new Boolean("true")を100万回呼び出すと、Boolean個のオブジェクトが作成されます。代わりに同じBooleanオブジェクトを再利用するを使用することができます(またはプリミティブ値trueを使用して、コンパイラがあなたのためにボクシングを処理するようにします)。

+0

さて、オブジェクトを作成するだけのオーバーヘッドですか?パフォーマンスヒットの他の具体的な理由はありません。 –

+0

@GS多くの不要なオブジェクトを作成すると、パフォーマンスが低下する可能性があります(占有するメモリ、ブール型コンストラクタを複数回実行するのにかかる時間、ガベージコレクタの追加作業、これらのオブジェクトの解放)。 – Eran

関連する問題