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