【发布时间】:2020-07-21 10:02:04
【问题描述】:
每次堆内存超过特定阈值时,是否可以在 java 中调用强制垃圾回收?
【问题讨论】:
-
我知道这并不过分有用,但也许您应该找出您的应用程序使用这么多内存的原因,然后尽可能减少它,或者提供更多内存。
-
为什么?这样做有什么意义?你知道什么是 JVM 不知道的,你“更清楚”什么时候需要运行 GC?
-
@Andreas 虽然有点牵强,但是如何生成需要大量时间的报告?您不希望潜在的 Full GC 引入更多时间,因此在报告生成之前触发 Full GC。我想可能还有其他情况 - 因为有些工具实际上可以为您提供这种能力。如果有工具可以做到这一点,我猜肯定会有人需要它。
-
@Eugene 问题不在于在代码中的某个特定 point 触发,例如在报告之前,它已经被支持 (
System.gc()),但是关于触发堆内存使用阈值,即在堆为例如时触发完整 GC 30% 满,而不是让 JVM 自己决定何时应该完成部分和完全 GC。所以我问OP有什么意义。为什么这会比 JVM 的内置逻辑有所改进,后者已经过大量测试以进行微调?
标签: java garbage-collection heap-memory java-heap