java - 此代码会造成潜在的内存泄漏吗?

标签 java android

我在我的代码中使用自定义数据库类来管理我的数据库和处理事务。每当我实例化它时,我都会将应用程序上下文传递给它的构造函数。阅读 Android 开发者网站上的文章让我想知道我是否正在做一些可能导致我的应用程序发生大量内存泄漏的事情。简化后,我的代码如下所示,首先是一个 Activity :

    public class MyActivity extends Activity
    {

        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.somelayout);

            Database db = new Database(getApplicationContext());
        }

    }

我的数据库类(在单独的文件中)如下所示:

public class Database
{

    Context context;

    public Database(Context context)
    {
        this.context = context;
    }

    public DatabaseHelper extends SQLiteOpenHelper
    {
        // Pass the context to the constructor etc etc.
    }

}

代码可能有bug,我用记事本写的很快。无论如何,这让我担心当用户导航离开 Activity 时 db 对象会保留上下文,从而不必要地花费大量资源。如果确实如此,我该如何避免呢?有没有办法在不需要的时候销毁和反对?

最佳答案

一旦 onCreate 完成,db 引用的对象就有资格进行垃圾回收。所以这里没有问题。

如果您将 dbDatabase.context 设置为 static 字段,那么您就应该开始担心了。

关于java - 此代码会造成潜在的内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6882322/

相关文章:

java - 位图的并行化

android - 可以在 TextView 中设置多少文本,这样它就不需要滚动

Java - 映射键查找忽略大小写

java - 新自定义控件上的 ClassNotFoundException - JavaFx

java - 使用java在xml中搜索结束排除

Javassist ClassPool 类的 get 方法针对 java.lang.String 抛出 NotFoundException

android - 配置文件如何找到正确的交叉编译工具?

java - 不同设备上的游戏速度不一样

java - 解密字符串生成 IllegalBlockSizeException

android - 我的 Android 应用程序与平板电脑不兼容