`

jstat java工具在linux上的源码分析

 
阅读更多

jstat通常是作为使用查看gc 状态,编译信息等具体信息,加载class量等,笔者在前面的博客里谈了jmap,jstack工具的如何实现可具体参考(http://blog.csdn.net/raintungli/article/details/7023092) ,谈到通常的方法必须让jvm的所有线程进入一个safe point的状态,也就是在使用jmap, jstack工具的时候会有线程的停顿感,并且影响到当时jvm所正在处理的事情,如果在产线上这是会影响客户体验的。

在调用jstat 的时候,并没有感觉到线程的停顿,也就是jstat 使用与jmap,jstack完全不同的方式,接着还是源码分析来解释。

在jstat.java中初始化LocalMonitoredVM中,初始化了PerfDataBuffer, 在PerfDataBuffer是通过Perf attach vm的进程生成byte buffer对象


关键就在native程序中, 查看perf.cpp 中对应的方法


也就是类PerfMemory的attach方法

在perfMemory_linux.cpp中,我们看到了attach 的实现


在mmap_attach_shared函数中,


该函数把一个文件mmap成内存,然后通过读取内存来读取该文件的内容,而文件的路径就是/tmp/hsperfdata_{userid}/{pid}

而在create_shared_memory函数中,也就是jvm 在vm_init_globals初始化后会创建这个文件并且用mmap映射成内存,接着虚拟机会把gc 或者其他需要的状态写入这个mmap文件中,jstat工具通过访问该文件,读取内容,显示在屏幕上,该文件通过内存映射实现,没有什么性能损耗,完整的jstat 的流程就全部走通了。





分享到:
评论

相关推荐

    java jstat 查看哪个进程频繁GC垃圾回收

    下面我们将详细探讨如何使用`jstat`工具以及通过配置GC日志来分析和优化Java进程。 `jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,...

    linux下运行java程序

    Linux以其稳定性和安全性成为了服务器平台的首选,而Java作为跨平台的编程语言,其程序在Linux上运行同样具有广泛的应用。这篇博文将深入探讨如何在Linux系统中配置Java环境并执行Java程序。 首先,确保你的Linux...

    Linux下启动JAVA

    在Linux上使用Java首先需要安装Java Development Kit (JDK)或Java Runtime Environment (JRE)。通常,可以通过官方Oracle JDK或开源的OpenJDK进行安装。在Ubuntu/Debian上,可以使用`apt-get`命令: ```bash ...

    JAVA 部署LINUX

    Linux以其开源、稳定和高效的特点,常被用作服务器平台,而Java作为一种跨平台的编程语言,非常适合在Linux上运行。以下是一些关于如何在Linux环境中部署Java应用的关键知识点: 1. **安装Java**: 在Linux系统中...

    JVM内存—jstat分析

    其中,`jstat`工具作为一种强大的命令行工具,在这一过程中扮演了关键角色。本文将深入探讨`jstat`的使用方法及其提供的多种选项,帮助读者更好地理解如何利用`jstat`进行JVM内存管理。 #### 二、jstat简介 `jstat`...

    jstat官方介绍

    jstat是Java虚拟机统计监视工具,它是Java开发工具包(JDK)的一部分,用于监控Java虚拟机(JVM)中的性能统计信息。该工具可以用来显示垃圾收集(GC)统计信息以及其他与JVM相关的性能指标。由于jstat工具不受...

    linux java常用配置

    在Linux上,Java通常通过包管理器来安装,如`apt`(Ubuntu/Debian)或`yum`(CentOS/RHEL)。命令可能是`sudo apt install default-jdk`或`sudo yum install java-1.8.0-openjdk-devel`,具体取决于你所需的Java版本...

    java引起的linux服务器性能问题查找

    通过上述步骤,可以有效地定位并解决Java应用在Linux服务器上引发的性能问题。值得注意的是,性能问题往往具有复杂性,可能涉及多个方面的原因,因此在实际操作中需要灵活运用多种工具和技术手段,综合分析才能达到...

    jStat中文参考手册

    jStat是一个强大的JavaScript统计学库,它提供了丰富的统计计算功能,使得用户无需掌握专门的统计软件如MATLAB或R就能在Web应用中进行高级统计分析。jStat的核心特性包括静态方法和实例方法,这两种方法在处理数据时...

    java_on_linux

    首先,Java在Linux上的安装主要有两种方式:通过软件包管理器(如apt-get或yum)或者直接下载JDK/JRE的二进制文件。使用软件包管理器的好处是方便、自动化,而直接下载则可以获取特定版本的Java。安装完成后,需要...

    Java内存泄露_JVM监控工具介绍

    jstack命令是一个强大的工具,用于分析Java程序的崩溃原因和堆栈信息。它可以将core文件转换为人类可读的格式,方便开发者快速定位问题所在。如果Java程序崩溃生成core文件,jstack工具可以用来获得core文件的Java栈...

    linux命令行版visualgc工具,jstat离线日志图形化展示工具_GCisual.zip

    linux命令行版visualgc工具,jstat离线日志图形化展示工具_GCisual

    Java中常用的Linux命令.docx

    Java中常用的Linux命令 ...5. 查看Java垃圾回收信息:`jstat` 命令可以查看Java垃圾回收信息。 掌握这些Linux命令,可以帮助Java开发者更好地管理文件、进程和网络,提高开发效率和解决问题的能力。

    【转】Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    JVM(Java虚拟机)提供了多种监控工具来帮助开发者检测和解决这类问题。本篇将重点介绍几种常用的JVM监控工具,包括jstack、jconsole、jinfo、jmap以及jdb和jstat。 首先,`jstack`是一个用于打印Java线程堆栈跟踪...

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    JVM性能调优监控工具jps、jstack、jmap、jhat、...jps、jstack、jmap、jhat、jstat 等 JVM 性能调优监控工具对于 Java 程序员来说是必备的,能够帮助我们解决各种 JVM 性能问题,提高 Java 应用程序的性能和稳定性。

    jstat命令手册.pdf

    jstat命令是用于监控Java虚拟机(JVM)运行时统计信息的命令行工具,它能够显示Java虚拟机中的堆状况、类加载、垃圾回收等多方面的数据。这个命令通常用于排查JVM性能问题或者进行监控分析。 jstat命令的基本用法...

    最新版linux jdk-11.0.12_linux-x64_bin.tar.gz

    Linux JDK 11.0.12 是Java开发工具包(Java Development Kit)的一个版本,专为Linux操作系统设计,适用于64位(x64)架构。...在实际开发中,理解并掌握这些知识点对于Linux上的Java编程至关重要。

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    jstack工具目前仅在Solaris和Linux的JDK版本中提供。 jconsole jconsole是一个基于Java Management Extensions (JMX)的实时图形化监测工具。该工具利用了内建到JVM中的JMX指令,提供实时的性能和资源的监控,包括...

    Java性能监控工具

    在Java中,有一些内置的工具可以用来监控和分析性能,包括内存使用、垃圾回收等方面。 首先,`jps`命令类似于Linux的`ps`命令,用于列出本地正在运行的Java进程ID。`jstat`工具则可以提供虚拟机(VM)的各种统计...

Global site tag (gtag.js) - Google Analytics