手动释放流量范围内的对象以进行垃圾回收

时间:2014-05-13 08:25:47

标签: java garbage-collection spring-webflow

我正在开发一个使用单个主人的WebFlow应用程序。流。此流程在流程范围内存储大量对象,以便在子流程之间进行通信。对于其中一些对象,我可以验证它们不再需要它们,我想手动释放它们进行垃圾收集,而不是等待用户注销。

有没有干净的方法来做到这一点,还是一个坏主意?

1 个答案:

答案 0 :(得分:4)

您可以做的最接近的事情是删除对不再需要的对象的所有强引用。你应该以任何方式做到这一点。例如清除不再需要的对象集合,并在不需要时立即关闭(即使GC可能会为您执行此操作)

这将最大化GC可以在程序中的任何点收集的对象数。

反过来,GC通过仅在需要时运行来减少总暂停时间并最大化效率。除了你有一个非常简单的工作流程和一个非常明确的点,大多数(比如说80 +%)的内存都可以清理之外,运行它的次数通常比需要的多,通常会降低程序的吞吐量。