我正在尝试最近几天解决Dalvik VM内存错误,错误是分配的位图内存不会被GC解除分配。这是一个众所周知的漏洞。
我要做的是创建对象 - 包含1 bitamp的SmartBitmap并实现:
@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时才会被调用,而且我找不到获取引用计数的方法。