我在Java代码中使用了基于事件的框架,并且有一个事件会在没有其他事件发生时触发,比如说这是线程空闲事件。我认为这是进行GC的好时机,因为这段时间进行GC不会影响其他工作。
所以:1,我有什么办法可以做到这一点? 2,我应该这样做吗?
答案 0 :(得分:1)
要回答您的问题:
您可以告诉JVM启动垃圾回收,但是JVM将决定是否以及何时进行垃圾回收。不再使用的对象将自动收集垃圾。如果您真的想建议JVM运行垃圾回收,则应使用以下代码行:
System.gc();
但是正如我说的那样,当不再需要使用JVM时,JVM将会看到它在需要/需要时的情况。
答案 1 :(得分:0)
1)System.gc()
2)我应该这样做吗?
万恶之源在于过早的优化
我怀疑它会有所帮助,而且很有可能会降低性能。您想优化什么?吞吐量还是延迟?您如何衡量?真的很难,就像使用gc一样,您应该模拟一个类似于生产的环境。 System.gc()会执行完整的gc,因此可能会导致较长的停顿,而年轻的短暂停顿是可以接受的。
请注意,G1垃圾收集器已经自动将其自身调整为系统负载。