【问题标题】:What happens when we explicitly call Garbage collector method?当我们显式调用垃圾收集器方法时会发生什么?
【发布时间】:2011-10-06 07:19:33
【问题描述】:

当我们显式调用垃圾收集器方法时会发生什么? 我遇到了一个启动垃圾回收的方法gc(),它是如何工作的?

【问题讨论】:

    标签: java garbage-collection


    【解决方案1】:

    它告诉垃圾收集器现在执行垃圾收集。
    注意:您不能强制 VM 执行此操作,但在大多数情况下会运行 GC

    这是一个blog post 的链接,了解 Java 垃圾收集器的工作原理

    有人问过这个问题here

    还可以查看 here 找到的参数


    更新回答评论: 即使您强制 GC 运行,GC 也不会收集活的对象。当 JVM 自动运行时,它会(大部分)做它所做的事情

    【讨论】:

    • 它是否会收集堆中的所有对象,即使它们正在运行......?我的意思是即使有范围它还活着?
    • @user980918:不,垃圾收集的全部意义在于它收集 garbage,即无法访问的对象。 GC 永远不应该收集可访问的(即活动的)对象 - 这将是一个严重的错误。
    • @sleske 确实我也有同感..所以 java 有一个很棒的功能可以找出未使用的对象并清理它们.. 那为什么他们有明确的 gc() 方法?
    • @user980918,gc() 适用于需要明确调用 gc() 的人。这通常仅对某些类型的测试有用。 RMI 使用它来避免分布式对象被保留太久。但是,你可以编写 Java 10 年,却永远找不到它的好用处。
    • @user980918,根据我的经验;没有愚蠢的问题,只有愚蠢的答案。 ;)
    【解决方案2】:

    这个方法只是对虚拟机的一个提示,它可能是执行大量垃圾收集的合适时机。当第一代 GC 用于长时间暂停时,这种方法可能很有用,但这些时候它完全没用。你甚至不能保证方法背后有一个实际的实现:)

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 2012-10-18
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多