如何初始化对象,以便垃圾收集器必须减少工作量

cha*_*ger -2 java android garbage-collection memory-management

android和java中这两种代码形式有什么区别..

for(int i = 0; i < 10000; i++){
    Student s = myMap.get(key);
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

和:

Student s;
for(int i = 0; i < 10000; i++){
    s = myMap.get(key);
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

第一个创建10000个对象,等待垃圾收集器从内存中删除它们,而在第二个代码形式中,只创建了一个对象.我对吗?或者我弄错了?

如果这是真的,那么使用第二种形式的内存是否更好?

Kay*_*man 7

你错了,没有理由你应该使用第二种形式.

创建了0个对象,唯一的区别是变量的范围.对象已经创建,它们在地图中.您只是分配对现有对象的引用.

在可能的最小范围内声明变量是一个好习惯,所以如果你没有s在循环之外使用(这没有意义,除非你想要处理最后一个Student),在循环中声明它是有意义的.