【问题标题】:How to free up memory of an Executor Service that has been shut down for garbage collecting?如何释放因垃圾收集而关闭的 Executor Service 的内存?
【发布时间】:2011-12-01 11:43:12
【问题描述】:

我目前正在开发一个使用大量线程的程序。

A-我的问题与在执行程序关闭以进行垃圾收集后释放执行程序有关,最好的方法是什么?我在某处读到我必须访问 Future(Runnable 或 Callable)并影响它为 null 以便垃圾收集器拾取它。这是真的吗?

B- 线程池也有同样的问题?

感谢您的帮助,

【问题讨论】:

  • 如果你想释放一个对象,你应该确保不再引用它。如果您需要对它的引用,则无法将其释放。您很少需要 null 出引用。

标签: java multithreading memory-leaks garbage-collection executorservice


【解决方案1】:

如果不再引用Executor Service,这应该自动完成。

【讨论】:

    【解决方案2】:

    内部线程 CallAble 或 Runnable 的资源在完成后启用 GC,但它们返回的资源除外。

    如果你想强制运行 GC。你应该打电话:

    System.qc();
    

    然后GC会在后台开始他的工作。

    【讨论】:

    • gc 不是 qc。而且它不是强制运行 GC,它只是给 JVM 一个运行 GC 的提示。不能保证它会释放任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多