(点击上方公众号,可快速关注)来源:Hengyunabc ,hengyunabc.github.io/jvm-heap-dump-find-fd/背景最近排查一个文件没有关闭的问题,记录一下。哪些文件没有关闭是比较容易找到的,查看进程的fd(File Descriptor)就可以。但是确定fd是在哪里被打开,在哪里被引用的就复杂点,特别是在没有重启应用的情况下。在JVM里可以通过heap dump比较方便地反查对象的引用,从而找到泄露的代码。以下面简单的demo为例,Demo会创建一个临时文件,并且没有close掉:import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class Test { public static void main(String[] args) throws IOException { File tempFile = File.createTempFile("test", "ttt"); FileInputStream fi = new FileInputStream(tempFile); System.in.read(); }}通过文件名查找对
………………………………