JVM之Jstat工具原理

本文详细介绍了JVM中PerfData的工作原理,包括其默认存储位置、如何通过参数控制内存共享、PerfData文件的生命周期管理及更新机制,揭示了JVM性能数据收集的核心过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理:从一个叫PerfData的共享文件获取数据,默认是指/tmp/hsperfdata_/这个文件;

PerfData文件相关参数:
  UsePerfData:默认是打开的,如果关闭了UsePerfData这个参数,那么JVM启动过程中PerfData的内存不会被创建;
  PerfDisableSharedMem:该参数决定了存储PerfData的内存是不是可以被共享。JVM在启动的时候会分配一块内存来存PerfData,如果设置了这个参数,说明该内存数据不能被其它进程共享,这样一来譬如Jps、Jstat等都无法工作。默认支持共享;

PerfData文件删除:正常情况下当JVM进程退出的时候会自动删除,但是当执行kill -9命令时,由于JVM不能捕获这种信号,虽然JVM进程不存在了,但是这个文件还是存在的。这个文件不是一直存在的,当再次有JVM进程启动时会自动删除这些无用的文件。

PerfData文件更新:由于PerfData文件是通过mmap的方式映射到了内存里,而jstat是直接通过DirectByteBuffer的方式从PerfData里读取的,所以只要内存里的值变了,那我们从jstat看到的值就会发生变化,内存里的值什么时候变,取决于-XX:PerfDataSamplingInterval这个参数,默认是50ms,也就是说50ms更新一次值,基本上可以认为是实时的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值