Java 是否有任何方法/钩子强制JVM运行终结?

Java 是否有任何方法/钩子强制JVM运行终结?,java,jvm,Java,Jvm,gc()是运行gc的方法,System.runFinalization()也是 但是如果使用Jmap进行堆转储,它将强制执行GC/full-GC。 所以我的问题是:有没有像Jmap堆转储那样的工具/方法/钩子可以用来强制执行runFinalization 我想再描述一下我的情况: 我的堆大小在一段时间后不会减小,当我进行头部转储时,我可以看到: 1:6793014271720560 java.lang.ref.Finalizer 2:7251647 232052704 java.util.Has

gc()是运行gc的方法,System.runFinalization()也是

但是如果使用Jmap进行堆转储,它将强制执行GC/full-GC。 所以我的问题是:有没有像Jmap堆转储那样的工具/方法/钩子可以用来强制执行runFinalization

我想再描述一下我的情况: 我的堆大小在一段时间后不会减小,当我进行头部转储时,我可以看到:

1:6793014271720560 java.lang.ref.Finalizer

2:7251647 232052704 java.util.HashMap$节点


3:6791349 162992376 XX.wp如前所述,finalize方法在垃圾收集对象时运行。不建议依赖于调用的此方法。您在这些finalize方法中做了什么?我还有一个问题:因为System.runFinalization()是一个建议。我想知道什么是评估过程,在什么条件下它将决定执行还是不执行?@secondfirst在finalize方法中,它清理JNI分配的资源。其次是留给我的遗留代码。我已经读了你提到的链接。感谢
System.runFinalization()
不会强制或建议或其他。。。它只是等待直到终结队列变空。这是一个错误。只需去掉类
XX.WP
中的
finalize()
方法,即可解决实际问题。