最近几天我正在尝试解决 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 时才被调用,而且我找不到获取引用计数的方法。