我正在使用ParseObject保存ParseFile(图像)。
ParseObjects使用固定保存在Parse的本地数据存储中。
当互联网连接可用时,应用程序首先上传ParseObjects。然后一次上传一个图像。所有上传都通过save_callbacks进行跟踪。
在ParseFile的保存成功回调中,我使用文件引用更新ParseObject,即parseObject.put(“image”,parseImageFile),然后在对象上调用save。
parseObject.put中存在内存泄漏。在回调中我尝试将所有内容设置为null以消除延迟引用,即我将图像字节数组,parsefile,parseobject设置为null但这没有帮助。解析offlinestore保持对ParseObject,PArsefile,byte []的引用。
我还尝试使用parseObject.put(“image”,null)删除save_callback中的引用,这会导致ANR。我试图使用parseobject.remove(“image”)删除引用,尝试通过调用parseobject.put(“image”,“ABC”.getBytes())来替换占用内存较小的parsefile ref,但这些方法都不是已经努力解决泄漏问题。不用说最终我得到了一个OutOfMemory异常。
PS-假设这可能是由于内部解析缓存,我也尝试调用ParseQuery.clearAllCachedResults()。
以下是Eclipse MAT中分析的dalvik堆的3个屏幕截图。
任何人都有类似的问题?