【发布时间】:2014-08-28 13:30:20
【问题描述】:
我们有一个处理大量数据的 Java 批处理程序。
处理完这些数据后,为什么JVM不立即清除垃圾,而是等待下一次执行?
根据我观察到的情况,上一次运行的数据保持原样,直到我手动关闭 JVM 或下一次计划运行开始。
我希望 JVM 立即清除数据,这样在下一次计划运行时,它不必在运行期间并行清除垃圾,希望运行得更快。
感谢您的帮助。
编辑:
非常感谢您的快速回复。
由于内存中存在这种垃圾,我并没有真正看到对我的进程有相当大的性能影响。 但是,它一直在消耗系统 RAM,并影响到该 JVM 之外的其他程序的内存可用性。
我遇到的另一个问题是,在开发和调试这个程序的过程中,当程序运行时,我让它运行,但一旦完成,为了分析结果,我必须打开一些其他应用程序,这些应用程序显然需要一些 RAM,但是除非我停止它,否则 JVM 不会放弃 RAM 空间,这会影响其他程序的可用性和性能。
【问题讨论】:
-
过于频繁地运行 GC 通常不是一个好主意,因此稍后将其保留是一个很好的折衷策略。但您可以tune the GC 采取不同的策略。
标签: java multithreading memory-management jvm