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

  • 时间:
  • 浏览:1
  • 来源:神彩大发11选5_彩神大发11选5官方

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

把heap dump文件导入VisualVM里,因此在“OQL控制台”查询上边的话语,结果是:

再能够查询到parent,引用相关的对象。

使用jmap命令:

这个 文件没办法 关闭是比较容易找到的,查看多多程序运行 的fd(File Descriptor)就能够。因此选折 fd是在哪里被打开,在哪里被引用的就复杂化点,很重是在没办法 重启应用的情形下。

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

最近排查一一个多多多文件没办法 关闭的间题,记录一下。

多多程序运行 打开的文件在OS里有对应的fd(File Descriptor),能够用lsof命令是是因为直接在linux下到/proc目录下查看。

对于每一一个多多多打开的文件在JVM里都一一个多多多多java.io.FileDescriptor对象。查看下源码,能够发现FileDescriptor里一一个多多多多fd字段:

什么都有必须查找到fd等于12的FileDescriptor,QOL话语:

在jdk8里自带VisualVM,jdk9过能够否单独下载:https://visualvm.github.io/

除了VisualVM还有其它什么都有heap dump工具,在jdk里还自带一一个多多多jhat工具,尽管在jdk9后来移除掉了,因此另一方还是比较喜欢这个 工具,是是因为它是一一个多多多web接口的。

打开链接能够查看具体的信息

访问 http://localhost:7000/oql/ ,能够在浏览器里查询OQL:

以demo为例,能够找到test文件的fd是12:

猜你喜欢

【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS

目前Curl的的最新版本不可能 是7.35.0,本来我官网提供的msvc的版本仍然是809年2月发布的7.19.3版本,本来我还找不到含静态openssl的lib,这就因为写

2020-02-19

请问在淘宝里面买东西是不是只要开通网上银行就可以了?还要不要再办一个支付宝啊?支付宝是在哪里办?

 我来答展开详细本回答由提问者推荐收起更多回答(1)你对這個 回答的评价是?为你推荐:扫描二维码下载你对這個 回答的评价是?可选中有一两个或多个下面的关键词,搜索

2020-02-18

【小程序 Demo】带你玩转支付宝小程序之小程序支付示例

1.进入小任务管理器开发中心,在我的小任务管理器中,选用相应的小任务管理器,进入该小任务管理器详情页。2.在小任务管理器详情开发管理页面的功能列表中,点击右上角加上功能按钮,加

2020-02-18

刚开了中国银行的银行卡,到支付宝进行实名认证,提示我“未在银行预留过手机号”

可选中一点一点或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个现象。下载百度知道APP,抢鲜体验为你推荐:扫描二维码下载有四种 原因 有了你留得手机号错了,

2020-02-18

银行卡不开通网银在淘宝买东西可以用银行卡支付吗

追答本回答由提问者推荐1、打开淘宝软件,登陆人及账户。4、输入支付宝密码,即可付款成功,在淘宝买东西成功。那末开通网银,怎么让绑定了支付宝是能不能在淘宝上买东西,可使用快捷支付

2020-02-18