字母强制gc禁止gc区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字母强制gc禁止gc区别相关的知识,希望对你有一定的参考价值。

字母强制gc禁止gc区别

1、字母G和C分别代表“Garbage Collection(垃圾回收)”和“Compaction(压缩)”,GC是指垃圾回收,是指在计算机中,当内存空间不足时,系统会自动回收不再使用的内存空间,以便提供更多的空间给新的程序。

2、禁止GC是指程序员禁止系统自动回收垃圾,这样可以减少系统资源的浪费,但也会降低系统性能,因为系统不能自动回收垃圾,这样会导致内存空间不足。

3、压缩是指将内存中的空间压缩,以便更好地利用空间,以减少内存空间的浪费。与垃圾回收不同,压缩不会清除内存中的数据,而是将内存中的空间压缩,以便更好地利用空间。
参考技术A 字母强制gc就是自动化和半自动化的区别。 强制gc是指java中的垃圾回收站。 java中的gc可以自动清理没用的变量占用的内存,从而不需要程序员手动的去释放空间,大大的提高了工作效率; 普通gc指这个请求机制提供给程序员一个启动 GC 过程的机会,但是启动由 JVM负责。JVM可以拒绝这个请求,所以并不保证这些调用都将执行垃圾回收。” 参考技术B 亲 你好 字母强制gc禁止gc区别就是自动化和半自动化的, 强制gc是指java中的垃圾回收站。

system.gc() 和 runtime.gc() 的区别

【中文标题】system.gc() 和 runtime.gc() 的区别【英文标题】:Difference between system.gc() and runtime.gc() 【发布时间】:2011-06-01 06:49:03 【问题描述】:

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

【问题讨论】:

你应该先学会看javadocs。如果 Android javadocs 没有回答您的问题,请访问 Sun / Oracle javadocs。 (是的,我知道代码不同,但作为一般规则,行为是相同的......) 【参考方案1】:

两者都是一样的。 System.gc() 等效于 Runtime.gc()System.gc()内部调用Runtime.gc()

唯一的区别是System.gc() 是一个类方法,而Runtime.gc() 是一个实例方法。所以,System.gc() 更方便。

【讨论】:

但是创建两个具有相同功能的相同方法的目的是什么 Runtime.gc() 不能直接调用。 gc() 是一个实例方法,要正确调用垃圾收集器,您需要调用静态方法getRuntime() 才能最终调用gc() 方法。因此,您需要这样做:Runtime.getRuntime().gc().【参考方案2】:

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

Runtime.getRuntime().gc();

所以这只是一种方便的方法。

【讨论】:

不再正确,至少在 API 23 中是这样。如果您调用 System.gc(),有一个标志可能会阻止 Runtimg.getRuntime().gc() 运行【参考方案3】:

See the docs

System.gc() 等价于Runtime.getRuntime().gc()

【讨论】:

请链接到文档的更新版本。 1.4.2 真的很老了。 抱歉,我只是在使用 Google 给我的第一件事。这确实对 OP 产生了不好的影响——这是 Google 可以回答的问题。 感谢您修复它。我会说它在谷歌上反映得很糟糕。为什么过时的文档是热门搜索结果? Google 不能将新文档的排名高于旧文档吗? AFAIK Google 主要根据点击量对页面进行排名,而较旧的文档的排名会更高,因为它们存在的时间更长。另外:当我搜索“java lang System”时,它确实排名最新,第一个来自搜索“System.gc()”。所以它有时会这样做。 多年来,我一直在 Google 搜索结果中看到 Java API 的这一点。您可以根据需要合理化行为。期望的行为是在列表顶部显示当前文档。首先显示旧文档已损坏,如果 Google 已经修复它会很好。已经好几年了。【参考方案4】:

Runtime.gc() 是本机方法,而 System.gc() 是非本机方法,而后者又调用 Runtime.gc()

【讨论】:

【参考方案5】:

System.gc():

1:是类方法(静态方法)。

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

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

Runtime.gc():

1:实例方法。

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

【讨论】:

【参考方案6】:

在运行时系统中 gc 是实例方法,但在系统方法中 gc 是静态的。

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

【讨论】:

不回答问题。【参考方案7】:

两者相同 System.gc() 等效于 Runtime.gc()

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

唯一的区别是:

System.gc() 是一个类(静态)方法,而 Runtime.gc() 是一个实例方法。所以,System.gc()更方便。

System.gc()

public final class System extends Object

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


Runtime.gc()

public class Runtime extends Object

    public void gc()

        // ...

    
    .
    .
    .


【讨论】:

以上是关于字母强制gc禁止gc区别的主要内容,如果未能解决你的问题,请参考以下文章

system.gc() 和 runtime.gc() 的区别

安卓手机 被禁止截屏 怎么截屏

System.gc()和Runtime.getRuntime().gc()区别

gc之四--Minor GCMajor GC和Full GC之间的区别

System.gc()与Runtime.gc()的区别

gc() 和 rm() 有啥区别