【问题标题】:Runnable is not garbage collected in javaRunnable 不是 java 中的垃圾收集器
【发布时间】:2012-10-02 00:44:25
【问题描述】:

我见过很多 Thread java 示例,并且 Runnable 对象被创建为任务并传递给线程。 由于没有引用这些任务,那么为什么这个任务没有被 java 垃圾收集呢? 还是垃圾收集了,我在这里问错了问题? 请分享您的宝贵想法。

【问题讨论】:

  • 你怎么知道他们没有被垃圾回收?
  • @nneonneo 我喜欢这个问题+1,我想问同样的问题:)。好的,再来一个:How do you know they aren't being garbage collected?
  • @elbek 我没有对这部分进行测试,但我从逻辑上得出的结论是,如果它正在被垃圾收集,那么什么都不会起作用,而且它必须比看起来更重要。

标签: java garbage-collection


【解决方案1】:

您没有对对象的显式引用这一事实并不意味着内部 JVM 对象不持有它。

举个例子:

frame.add(new JButton("foobar"));

从开发人员的角度来看,它没有引用它,但在框架内部有一个组件列表。这就是线程发生的情况,内部调度程序必须确保对它们保持引用。

线程本身将在从调度程序释放时被垃圾回收(因此不再有效地存在对它的引用)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-07
    • 2012-06-12
    • 2010-12-13
    • 2011-02-25
    • 2011-01-06
    • 1970-01-01
    • 2010-10-04
    相关资源
    最近更新 更多