5 년간의 휴식 후에 Java로 돌아갑니다. 정확히 기억한다면 가비지 컬렉터는 setListAdapterStrings(String [] data)?
을 호출 한 후 '새로운'메모리를 수집하고 수집합니다.보다 일반적인 것은 JVM을 사용하는 동안 메모리 누출을 생성 할 때 사용하려는 기본 설정이 누구에게나 있습니까?Java 및 메모리 누수
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);
}
}
누출 위치는 어디입니까? –
이론상 Java는 "누출되지 않습니다". 그러나 Android Java는 Java가 아니며 여러 시스템 관련 객체 (특히 이미지)가 "누출되어"여러 메커니즘 중 하나를 통해 해제해야 할 수 있습니다. 약 3 년 동안 Android에서 떨어져 있었기 때문에 자세한 내용은 기억하지 않습니다. –
@SotiriosDelimanolis 맨 위 질문을 읽으십시오. mLList를 다시 새로 만들 때 setListAdapterStrings (String [] data)에 대한 후속 호출을 수행하면 메모리 누수가 발생하는지 묻는 것입니다. –