我正在制作像应用程序一样的幻灯片。
但是,我发现幻灯片播放30分钟后会自动重启。
做ps和我可以看到每次切换图片时 RSS 部分都在增加。
我尝试在加载下一张图片之前添加System.gc()
,甚至调用Thread.sleep()
来产生当前线程。但gc永远不会发生......
我认为我没有在我的代码中保留任何无用的引用,因为如果我将其与DDMS
相关联并点击GC button
,则会执行GC
} 很好。并且 RSS 部分的大小减少到流程开始时的水平。
问题是为什么DDMS可以通过单击GC按钮释放大量内存,但不会自动调用GC(只是将无用的对象留在那里)?
答案 0 :(得分:1)
您无法强制使用GC(或者至少我不知道Android上的此类功能)。正如System.gc()
所述:
向VM表明运行垃圾收集器是一个好时机。请注意,这只是一个提示。无法保证垃圾收集器实际上会运行。
如果你的应用没有OutOfMemoryError
,那么一切都很好。否则,您会遇到内存管理问题,并且某些资源(如图像(和其他内存生成对象))无法正常回收/销毁。