Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在onLowMemory方法中调用Runtime.gc()_Java_Android_Performance - Fatal编程技术网

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()
是一个类方法,其中as
Runtime.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())。