public void testname() throws Exception {
HoldMemory holdMemory;//去掉=null操作
for (int i = 0; i < 50000; i++) {
holdMemory = new HoldMemory();
}
System.out.println(Runtime.getRuntime().freeMemory());
}
public void testname() throws Exception {
for (int i = 0; i < 50000; i++) {
HoldMemory holdMemory = new HoldMemory();
}
System.out.println(Runtime.getRuntime().freeMemory());
}
这两段代码用jclasslib 工具查看所生成的字节码是完全相同的。(只是变量i和holdMemory在局部变量表的位置不同,对程序运行没有任何影响)可见:对Java而言,局部变量声明在循环体内、或者循环体外没有任何区别。