我在我的应用程序上遇到了一些内存不足的问题,并且想要调用垃圾收集器,但我不确定我应该在哪种方法中调用它。
这是我的代码:
public static void CleanUpMemory(){
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();
}
目前我在onStop()
中调用此方法,但最好是在onDestroy()
内调用吗?
答案 0 :(得分:1)
手动调用GC绝不是一个好习惯。 Dalvik或ART只比我们更清楚。
如果您的应用需要大量内存来处理昂贵的操作,这是一个很好的解决方案
feColorMatrix
答案 1 :(得分:0)
最好让垃圾收集器独自工作。
当需要垃圾收集内存时,它就会启动。
考虑调用System.gc()
只是建议启动在真正需要时运行的gc。
来自javadoc:
调用gc方法表明Java虚拟机耗费 努力回收未使用的物体以制造记忆 它们目前可用于快速重复使用。当控制返回时 从方法调用中,Java虚拟机已尽最大努力 从所有丢弃的物体中回收空间。
尝试使用您的改进来使用更少的内存,而不是显式调用gc(缓存对象,使用池等)。
答案 2 :(得分:0)
在您的活动中直接调用gc()
并不是一个好习惯(JVM知道何时运行它)。
如果您遇到内存问题,请尝试使用MAT在您的应用中查找内存泄漏。
System.gc()调用也不会强制进行垃圾回收。达尔维克决定何时运行gc