0

最近几天我正在尝试解决 Dalvik VM 内存错误,该错误是为位图分配的内存不会被 GC 释放。这是一个众所周知的开放错误。

我想要做的是创建对象 - SmartBitmap 将包含 1 位放大器并实现:

@Override
protected void finalize() throws Throwable {
    super.finalize();
    // bitmap.finalize()
    Log.d("SmartBitmap", "inside finalize");
}

public void recycle() {
            super.recycle();
    bitmap.recycle();
            bitmap = null;
            Log.d("SmartBitmap", "inside recycle");
}

我的目标是近距离观察我在应用程序中的所有位图都在获得 recycle() 以及那些为 GC 获得 finalyze() 的位图。我不能调用位图的 finalyze(),因为它是私有的,但我假设我的对象的 finalyze() 将同时被调用(我只是通过它使用位图)。

问题是我除了 finalyze() 仅在位图的引用计数为 0 时才被调用,而且我找不到获取引用计数的方法。

4

0 回答 0