Java system.gc()和runtime.gc()之间的差异

Java system.gc()和runtime.gc()之间的差异,java,android,garbage-collection,Java,Android,Garbage Collection,System.gc()和Runtime.gc()之间有什么区别?两者都是相同的System.gc()实际上等同于Runtime.gc()System.gc()内部调用Runtime.gc() 唯一的区别是System.gc()是一个类方法,其中asRuntime.gc()是一个实例方法。因此,System.gc()更方便。 System.gc()相当于Runtime.getRuntime().gc()从源代码看:System.gc()实现为 Runtime.getRuntime().gc();

System.gc()
Runtime.gc()
之间有什么区别?

两者都是相同的
System.gc()
实际上等同于
Runtime.gc()
System.gc()
内部调用
Runtime.gc()

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


System.gc()
相当于
Runtime.getRuntime().gc()

从源代码看:
System.gc()
实现为

Runtime.getRuntime().gc();

因此,这只是一种方便的方法。

运行时.gc()
是一种本机方法,其中as
System.gc()
是非本机方法,它反过来调用
运行时.gc()
在运行时系统中,gc是实例方法,但在系统方法中,gc是静态的

由于这个原因,我们更喜欢使用system.gc()。

system.gc():

1:它是一个类方法(静态方法)

2:非本机方法(不直接与硬件和系统资源交互的代码)

3:System.gc(),内部调用Runtime.getRuntime().gc()

Runtime.gc():

1:实例方法


2:本机方法(一种直接与硬件和系统资源交互的编程语言)。

两者都是相同的System.gc()实际上等同于Runtime.gc()

System.gc()在内部调用Runtime.gc()

唯一的区别是:

gc()是一个类(静态)方法,其中as Runtime.gc()是一个实例方法。因此,System.gc()更方便

System.gc()

Runtime.gc()


请链接到文档的更新版本。1.4.2真的很老了。对不起,我只是用了谷歌给我的第一件东西。这在OP上反映得很糟糕——这是一个谷歌可以回答的问题。谢谢你修复它。我会说,这对谷歌的影响很糟糕。为什么过期文档是最热门的搜索结果?谷歌不能将新文档的排名高于旧文档吗?很好,谷歌主要根据点击率对页面进行排名,而旧文档的排名会更高,因为它们存在的时间更长。另外:当我搜索“JavaLangSystem”时,它的确是排名最高的,第一个是搜索“System.gc()”。我在谷歌搜索JavaAPI的结果中已经看到了很多年了。你可以随心所欲地使这种行为合理化。所需的行为是在列表顶部显示当前文档。先显示旧文档是不好的,如果谷歌已经修复了它就好了。已经好几年了,你应该先学会看javadocs。如果Android javadocs没有回答您的问题,那么接下来就转到Sun/Oracle javadocs。(是的,我知道代码是不同的,但作为一般规则,行为是相同的…)没有回答这个问题。但是创建两个具有相同功能的相同方法的目的是什么?不能直接调用
Runtime.gc()
gc()
是一个实例方法,要正确调用垃圾收集器,需要调用静态方法
getRuntime()
以最终调用
gc()
方法。因此,您需要执行以下操作:
Runtime.getRuntime().gc()
。至少在API 23中不再如此。如果调用System.gc(),则有一个标志可能会阻止运行Runtimg.getRuntime().gc()
public final class System extends Object{

    public static void gc(){
        .
        .
         Runtime.getRuntime().gc();
    
    }
    .
    .

}
public class Runtime extends Object{

    public void gc(){

        // ...

    }
    .
    .
    .

}