很长一段时间以来,我一直在尝试修复我的应用程序中的内存泄漏,但我总是遇到死胡同。这个应用程序以图像为中心,所以我使用Picasso库来处理缓存和内存使用。我将高内存使用率(我的应用程序的内存使用率高达100-170mb )归因于毕加索糟糕的内存管理,但我做了一些测试,并禁用了毕加索的内存缓存,它加载了我所有的图像,ram使用率并没有明显下降。它仍然使用90到170MB以上的内存。我在一个hprof文件中执行了一个完整的堆转储,并使用MemoryAnalyzer打开它以查看以下内容:http://i.gyazo.com/6b8d884852fa7cae546fc4cad1fc44c9.png。
如果我转到Path to GC Roots,它没有显示root,也没有父级。在这25个巨大的字节数组中,没有任何超过50,000,000字节的链接,我真的不知道从哪里开始寻找原因。您对bug可能是什么以及可能的修复有什么建议吗?
非常感谢你对我的帮助!
发布于 2015-05-22 09:33:33
尝试使用LeakCanary查找内存泄漏。
此外,您可以尝试使用Fresco进行图像加载和显示,它将图像存储在本机内存区域中,因此您不会使用托管区域的太多内存,GC不会占用太多时间,并且您可以避免OutOfMemoryErrors。
https://stackoverflow.com/questions/30386510
复制相似问题