JVM之Jstat工具原理

来源:互联网 发布:js时间戳转换成时间 编辑:程序博客网 时间:2024/06/07 20:13

原理:从一个叫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更新一次值,基本上可以认为是实时的了。

原创粉丝点击