Java 8 ラムダ式は常に新しいヒープ オブジェクトを作成しますか?
ラムダ式のパフォーマンス: ヒープの割り当てとインスタンスの作成
Java 8 のラムダ構文を利用してコレクションを反復処理する場合、次のような共通の懸念が生じます。各ラムダ呼び出しはヒープ上に新しいオブジェクトを作成しますか?これは、匿名クラスを使用した従来の構文と同等ですか?
答え:
はい、いいえです。ラムダ式は機能的には匿名クラスと同等ですが、異なる実装動作を示します。
具体的には、値を取得しない (つまり、スコープ外の変数にアクセスしない) ラムダ式は、呼び出し間で再利用されるシングルトンになります。 。これは、毎回ヒープ上に新しいオブジェクトを作成するわけではないことを意味します。
ただし、ラムダ式が値をキャプチャする場合、実行のたびに新しいインスタンスが作成されます。 JVM の実装によって正確な動作が決まりますが、Oracle の JVM は現在、値を取得するラムダ用にシングルトンを作成し、非シングルトン用に複数のインスタンスをインスタンス化します。
ヒープ スペースとパフォーマンスへの影響:
シングルトンは、ヒープ領域の使用率を最適化します。これは、ラムダが実行されます。ただし、値を取得するラムダの場合、特に頻繁に使用する場合、複数のインスタンスが大量のヒープ領域を消費する可能性があります。
さらに、呼び出しごとに新しいインスタンスを作成すると、パフォーマンスが低下します。複雑なロジックを使用して値をキャプチャするラムダや、大きな変数をキャプチャする場合、パフォーマンスのオーバーヘッドが顕著になる可能性があります。
推奨事項:
ラムダ式を優先するか、従来の for ループを優先するかによって異なります。ラムダ式の性質について。シングルトンはパフォーマンス上の利点を提供しますが、値を取得するラムダではヒープ領域とパフォーマンスのコストが発生する可能性があります。大規模なマルチレベルのデータ構造の場合、パフォーマンスが重要な場合は、従来の for ループの方が適している可能性があります。
以上がJava 8 ラムダ式は常に新しいヒープ オブジェクトを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック







