在onLowMemory方法中调用Runtime.gc()

时间:2017-11-27 11:16:11

标签: java android performance

我们是否应该使用Runtime.gc()System.gc()来清除Application类中onLowMemory()方法中的生产代码中的内存(手动垃圾回收)?

2 个答案:

答案 0 :(得分:5)

这是一个不好的做法,使用System.gc()并不意味着你手动使用gc它只提示jvm来消除垃圾。最好不要在finalize()中使用Object之类的方法,这两种方法都不提供任何保证。在Application的javadoc中,系统将在从此方法返回后执行gc,并以正确的方式执行此操作。

  

您应该实现此方法以释放任何缓存或其他   你可能持有的不必要的资源。系统会   从这个方法返回后为你执行垃圾收集。

Application javadoc

因此,当您从此方法返回后在System.gc()方法中使用onLowMemory()时,将是另一个垃圾收集工作。从javadoc中提示,在方法结束之后,在示例List<Object> bigCache = null;中丢失了与缓存的链接会更好,这将是垃圾收集,它会获取缓存列表并释放内存。

答案 1 :(得分:0)

要清除记忆,您可以在> 0

内拨打

两者都是一样的。 onLowMemory()实际上等同于System.gc()Runtime.gc()在内部调用System.gc()

唯一的区别是Runtime.gc()是一种类方法,其中System.gc()是一种实例方法。因此,Runtime.gc()更方便。

希望你明白。