繁体   English   中英

Java垃圾收集器方法

[英]Java Garbage Collector method

我正在尝试了解垃圾收集器方法

“在Java中,您的程序必须经常调用垃圾收集器方法;否则,程序将被垃圾对象覆盖”

我相信这是错误的,因为程序应该在后台正确运行时自动执行此操作?

正确。 事实上, 没有垃圾收集方法( System.gc()是,现在可能是一个好时机,垃圾收集线索,但它没有更多)。 如果JVM实现垃圾回收(所有Java SE和Java EE都执行垃圾回收),它将根据自己的规则进行收集,通常包括同时清理短期对象,并在内存开始变少或变少时进行大型收集。支离破碎。

虽然通常将System.gc()调用视为不好,不好,不好,非常不好的做法,但在某些情况下,这可以防止内存不足错误。 这主要是当您以非常连续的顺序分配许多对象并且有一段时间不再引用这些对象并且可以删除它们时。 尽管System.gc()只是一个提示,但有时系统可能需要此提示。 另外,您可能会重新考虑算法。

但是,在较新的Java版本中,这种情况越来越少。 过去更加频繁。 官方的观点是永远不要手动调用垃圾收集器。

方法System.gc()不一定调用垃圾回收器。 垃圾回收取决于JVM的实现。 例如,当您执行System.gc()时,Linux JVM可能实际上会调用GC,而Windows JVM可能不会。

可以说您的内存中有太多无法访问的对象,但是仍然有足够的堆空间,因此JVM可能会决定不运行GC线程。 因此得出结论: “当您调用System.gc()时,没有保证GC线程将运行,因此不必调用它。”

这是Java开发人员不必担心内存管理和内容的主要优势之一。 与C ++不同,在C ++中您必须做类似的事情

free(obj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM