我正在开发一个 Android 应用程序,它陷入了 GC_FOR_MALLOC 释放的无限循环:
06-15 11:24:56.685: DEBUG/dalvikvm(118): GC_FOR_MALLOC freed 4136 objects / 374744 bytes in 66ms
06-15 11:24:59.176: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9340 objects / 524152 bytes in 645ms
06-15 11:24:59.846: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524328 bytes in 149ms
06-15 11:25:01.535: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9346 objects / 524448 bytes in 193ms
06-15 11:25:02.175: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524344 bytes in 126ms
应用程序通过套接字(专用线程)读取一些 jpeg 图像并将其显示在 imageView 中。 GC 循环阻塞了图像显示。
是否有解决方案可以知道代码的哪一行或至少代码的哪一部分正在抛出垃圾回收?
谢谢
最佳答案
我不确定你是否可以访问VM并检查它为什么一直在执行gc,但gc通常在需要时执行。您应该检查是什么占用了这么多内存。它可能正在加载您的图像(它是大图像吗?)或者它可能是您应用程序中的其他内容。检查this post on how to analyse your memory usage并在此过程中检查是否存在内存泄漏。
关于android - 如何找到 GC_FOR_MALLOC 的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355724/