我使用以下命令获取了Java 8 jvm spring boot应用程序的堆转储:
jmap -dump:format=b,file=/myHeapDumpFile 123
当我打开文件时,YourKit Java Profiler显示以下内容。请注意 java.lang.ref.Finalizer 在列表顶部。
关于SO is memory leak? why java.lang.ref.Finalizer eat so much memory的另一个问题,解释了Object.finalize()方法的使用如何导致堆转储中的 java.lang.ref.Finalizer 。这不能解决我下面的问题。
我在下面的屏幕快照中编辑的jar文件名是应用程序,即应用程序打包到的核心jar文件。
该类有很多对象,它们看起来都与底部窗格中展开的对象相同。
点击屏幕右上角的“继续计算”链接后,经过几秒钟的延迟, java.lang.ref.Finalizer 所在的行从列表,保留的大小急剧减少。