7

私はただ興味があります。
while/forループ内で参照を定義するとします。

JVMはこの参照を反復ごとに定義しますか、それとも1回だけ定義するように最適化されていますか?

4

4 に答える 4

7

毎回定義し、そのループ反復のみにスコープを設定します。

ループの反復が完了するとすぐに、GCの対象になります。

Louis Wassermanがコメントしたように、変数は毎回再初期化されますが、メモリスペースはおそらく再利用されます。

于 2012-10-12T18:23:21.503 に答える
4

参照は各反復で定義されます。コードがネイティブコードに最適化されると、ループの外に移動できるため、パフォーマンスに影響を与える必要はありません。この参照をnew毎回オブジェクトに設定すると、そのオブジェクトの作成も最適化されていない限り、反復ごとに新しいオブジェクトが作成される可能性があります。

于 2012-10-12T18:29:18.790 に答える
2

その毎回定義されます。(私の知る限り)そのための最適化はありません。

于 2012-10-12T18:24:49.120 に答える
1

-は、ループが繰り返されるたびに参照を定義しますが、参照のスコープはその反復にのみ関連付けられます。

-ループの外側で参照を宣言し、ループの内側でオブジェクトを割り当てたとすると、参照は同じままですが、すべての反復でそのタイプの新しいオブジェクトを参照します。

于 2012-10-12T18:27:27.440 に答える