我们是否应该使用Runtime.gc()
或System.gc()
来清除Application类中onLowMemory()
方法中的生产代码中的内存(手动垃圾回收)?
答案 0 :(得分:5)
这是一个不好的做法,使用System.gc()
并不意味着你手动使用gc它只提示jvm来消除垃圾。最好不要在finalize()
中使用Object
之类的方法,这两种方法都不提供任何保证。在Application
的javadoc中,系统将在从此方法返回后执行gc,并以正确的方式执行此操作。
您应该实现此方法以释放任何缓存或其他 你可能持有的不必要的资源。系统会 从这个方法返回后为你执行垃圾收集。
因此,当您从此方法返回后在System.gc()
方法中使用onLowMemory()
时,将是另一个垃圾收集工作。从javadoc中提示,在方法结束之后,在示例List<Object> bigCache = null;
中丢失了与缓存的链接会更好,这将是垃圾收集,它会获取缓存列表并释放内存。
答案 1 :(得分:0)
要清除记忆,您可以在> 0
两者都是一样的。 onLowMemory()
实际上等同于System.gc()
。 Runtime.gc()
在内部调用System.gc()
。
唯一的区别是Runtime.gc()
是一种类方法,其中System.gc()
是一种实例方法。因此,Runtime.gc()
更方便。
希望你明白。