繁体   English   中英

Java和内存泄漏

[英]Java and Memory Leaks

经过5年的休整,我回到了Java。 如果我没记错的话,垃圾收集器会在后续调用setListAdapterStrings(String [] data)?之后启动并收集'new'内存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);
    }
}

不,这不是内存泄漏。 Java不需要显式free内存。 垃圾收集器将来会收集现在ListAdapters

通常,内存以Java两种方式泄露:

  1. 无意中保留引用太长时间
  2. 没有正确处理较低级别的资源(数据库连接,套接字等)。

在第一种情况下,“泄漏”实际上是用词不当。 它仍然可以访问,这就是为什么它没有收集,所以不能说它已经泄露,但它可能不再使用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM