字母强制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()区别