1

在离开 Java 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);
    }
}
4

1 回答 1

3

不,这不是内存泄漏。Java 不需要显式free的内存。现在不可引用的ListAdapters将在未来由垃圾收集器收集。

通常,Java 中的内存泄漏有两种方式:

  1. 无意中保留参考的时间过长
  2. 未正确处理较低级别的资源(数据库连接、套接字等)。

在第一种情况下,“泄漏”确实是用词不当。还是可以到达的,所以没有收集到,所以不能说泄露了,但是估计也不会再用了。

于 2013-07-09T20:40:22.117 回答