JAVA:循环中定义的引用

时间:2012-10-12 18:22:43

标签: java performance jvm

我只是好奇 假设我在while / for循环中定义了一个引用。

JVM是否每次迭代都定义此引用,或者它是否经过优化以仅定义一次?

4 个答案:

答案 0 :(得分:7)

它定义每次并仅限定循环迭代。

一旦循环迭代完成,它就有资格使用GC。

正如Louis Wasserman评论的那样,变量每次都会重新初始化,但内存空间可能会被重用。

答案 1 :(得分:4)

每次迭代都会定义引用。一旦代码被优化为本机代码,它就可以移到循环之外,因此它不会产生性能影响。如果每次都将此引用设置为new对象,则可能会在每次迭代时创建一个新对象,除非该对象创建也已经过优化。

答案 2 :(得分:2)

每次定义。没有优化(据我所知)。

答案 3 :(得分:1)

- 每次定义引用循环迭代,但引用的范围仅附加到该迭代。

- 考虑您在循环之外声明了引用,但将对象分配给 循环,然后引用保持不变,但它在每次迭代中引用该类型的新对象。