经过5年的休整后,我回到了Java。如果我没记错的话,垃圾收集器会在后续调用setListAdapterStrings(String [] data)?
之后启动并收集“新”内存。为了更一般,任何人都有一个他们喜欢在生成内存泄漏时使用的首选文档集。使用JVM?
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
public class MainActivity extends ListActivity {
private ListAdapter mListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
createAdapter();
setListAdapter(mListAdapter);
}
protected void createAdapter() {
// Create some mock data
String[] testValues = new String[] {
"Hello",
"Welcome",
"The",
"Java",
"Test",
"World",
};
setListAdapterStrings(testValues);
}
public void setListAdapterStrings(String [] data) {
mListAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
data);
}
}
答案 0 :(得分:3)
不,这不是内存泄漏。 Java不需要明确的free
内存。垃圾收集器将来会收集现在不可引用的ListAdapters
。
通常,内存以Java两种方式泄露:
在第一种情况下,“泄漏”实际上是用词不当。它仍然可以访问,这就是为什么它没有收集,所以不能说它已经泄露,但它可能不再使用了。