从JVM heap dump里查找没有关闭文件的引用

  • 时间:
  • 浏览:3
  • 来源:爱乐彩网站_爱乐彩下载_爱乐彩官网

对于每三个白多 打开的文件在JVM里也有 三个白多 java.io.FileDescriptor对象。查看下源码,不需要 发现FileDescriptor里有三个白多 fd字段:

使用jmap命令:

打开链接不需要 查看具体的信息

在jdk8里自带VisualVM,jdk9以后不需要 单独下载:https://visualvm.github.io/

太少 不需要 查找到fd等于12的FileDescriptor,QOL一段话:

再不需要 查询到parent,引用相关的对象。

除了VisualVM还有其它太少 heap dump工具,在jdk里还自带三个白多 jhat工具,尽管在jdk9以后移除掉了,以后一点人还是比较喜欢这种 工具,可能性它是三个白多 web接口的。

访问 http://localhost:7000/oql/ ,不需要 在浏览器里查询OQL:

以demo为例,不需要 找到test文件的fd是12:

把heap dump文件导入VisualVM里,以后在“OQL控制台”查询后面 的一段话,结果是:

线程打开的文件在OS里有对应的fd(File Descriptor),不需要 用lsof命令可能性直接在linux下到/proc目录下查看。

最近排查三个白多 文件没办法 关闭的什么的问题,记录一下。

这种 文件没办法 关闭是比较容易找到的,查看线程的fd(File Descriptor)就不需要 。以后选折 fd是在哪里被打开,在哪里被引用的就繁复点,很糙是在没办法 重启应用的情况报告下。

在JVM不需要 能通过heap dump比较方便地反查对象的引用,从而找到泄露的代码。

以下面简单的demo为例,Demo会创建三个白多 临时文件,以后没办法 close掉: