我只是好奇 假设我在while / for循环中定义了一个引用。
JVM是否每次迭代都定义此引用,或者它是否经过优化以仅定义一次?
答案 0 :(得分:7)
它定义每次并仅限定循环迭代。
一旦循环迭代完成,它就有资格使用GC。
正如Louis Wasserman评论的那样,变量每次都会重新初始化,但内存空间可能会被重用。
答案 1 :(得分:4)
每次迭代都会定义引用。一旦代码被优化为本机代码,它就可以移到循环之外,因此它不会产生性能影响。如果每次都将此引用设置为new
对象,则可能会在每次迭代时创建一个新对象,除非该对象创建也已经过优化。
答案 2 :(得分:2)
每次定义。没有优化(据我所知)。
答案 3 :(得分:1)
- 每次定义引用循环迭代,但引用的范围仅附加到该迭代。
- 考虑您在循环之外声明了引用,但将对象分配给 循环,然后引用保持不变,但它在每次迭代中引用该类型的新对象。