Java 在onLowMemory方法中调用Runtime.gc()
我们应该使用Java 在onLowMemory方法中调用Runtime.gc(),java,android,performance,Java,Android,Performance,我们应该使用Runtime.gc()还是System.gc()来清除应用程序类中onLowMemory()方法中的生产代码中的内存(手动垃圾收集)?来清除内存,您可以在onLowMemory()中调用它们 两者都是一样的System.gc()实际上等同于Runtime.gc()System.gc()内部调用Runtime.gc() 唯一的区别是System.gc()是一个类方法,其中asRuntime.gc()是一个实例方法。因此,System.gc()更方便 希望您能收到。否。从Javadoc
Runtime.gc()
还是System.gc()
来清除应用程序类中onLowMemory()
方法中的生产代码中的内存(手动垃圾收集)?来清除内存,您可以在onLowMemory()中调用它们
两者都是一样的System.gc()
实际上等同于Runtime.gc()
System.gc()
内部调用Runtime.gc()
唯一的区别是System.gc()
是一个类方法,其中asRuntime.gc()
是一个实例方法。因此,System.gc()
更方便
希望您能收到。否。从Javadoc:
您应该实现此方法以释放任何缓存或您可能持有的其他不必要资源。从该方法返回后,系统将为您执行垃圾收集
这是一种糟糕的做法,使用System.gc()
并不意味着手动使用gc,它只是提示jvm清除垃圾。最好不要在对象中使用类似finalize()
的方法,这两种方法都不提供任何保证。在应用程序的javadoc中,
表示系统将在从该方法返回后执行gc,并给出了以正确方式执行的方式
您应该实现此方法以释放任何缓存或其他缓存
您可能持有的不必要资源。该系统将
从该方法返回后,为您执行垃圾收集
因此,当您从该方法返回后在onLowMemory()
方法中使用System.gc()
时,将是另一个垃圾收集工作。从javadoc中的提示来看,最好在示例List bigCache=null中丢失到缓存的链接方法结束后的代码>将是垃圾收集,垃圾收集将拾取缓存列表并释放内存。此外,调用System.gc()
一次会产生与for(int i=0;i<10;i++){System.gc();}
不同的结果。否,因为在内存不足的情况下,系统已尝试进行gc,你需要清理资源instead@AesSedai101问题是他是否应该调用它们中的任何一个,而不是哪个。@hemant parmar很抱歉误解了,我的意思是问我们是否应该在onLowMemory()
中使用Runtime.gc()(或System.gc())。