我一直试图在我的应用程序中修复内存泄漏很长一段时间,而且我一直陷入死胡同。该应用程序以图像为中心,因此我使用Picasso库来处理缓存和内存使用。我在Picasso的部分通过了高ram使用(我的应用程序高达100-170mb)到糟糕的内存管理,但我做了一些测试并禁用了Picasso的内存缓存,它加载了我的所有图像,而且没有一个非常明显的下降在RAM使用中。它仍然使用90到170以上的RAM。我在hprof文件中执行了完整的堆转储,并使用MemoryAnalyzer打开它以查看: http://i.gyazo.com/6b8d884852fa7cae546fc4cad1fc44c9.png
如果我去GC根路径,它显示没有根,没有父母。在这25个大型字节数组中,没有任何超过50,000,000字节的链接,我真的不知道从哪里开始寻找它的原因。 你对这个bug有什么建议以及任何可能的修复方法有什么建议吗?
非常感谢你帮助我!
答案 0 :(得分:1)
尝试使用LeakCanary
查找内存泄漏。
此外,您可以尝试Fresco
进行图片加载&显示,它将图像存储在本机内存区域,因此您不会从托管区域使用太多内存,GC不会花费太多时间而您可以避免down'
/var/lib/gems/1.9.1/gems/activerecord-4.2.0/lib/active_record/migration.rb:802:in
。