java性能分析工具
jcmd:向JVM发送诊断的命令,jvm未必会全部响应,有些需要在jvm开启相应功能才能响应。个人平时用的不是很多。
SampleA: 添加 jcmd pid VM.native_memory detail 查看jvm内存分配情况(堆内内存、Code区域或者使用unsafe.allocateMemory和DirectByteBuffer申请的堆外内存),不包括底层c语言分配的内存
Reserved的内存是指在虚拟内存地址中申请的内存页,并没有关联实际内存,所以不会对应用的内存占用产生什么实际的影响(在应用看来,它的内存区变的连续了)。所以这个rserve的内存大小一般和top的virt内存块对应。commit的内存是已经关联了物理内存(有的是物理内存,有的是磁盘的文件(swamp内存)),它和top的实际占用内存相关。
Jcmd看到的commit内存总和是jvm层面实际分配的内存大小。 Pmap的RSS的总内存是应用在操作系统层面占用的总内存,应该和top里显示的是一致的(他们是commit的内存 除去 page out的内存)。
https://docs.microsoft.com/zh-cn/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc
https://stackoverflow.com/questions/2440434/whats-the-difference-between-reserved-and-committed-memory
https://zhanjindong.com/2016/03/02/jvm-memory-tunning-notes
jmap:提供dump,和统计JVM内存使用的一定粒度的统计信息(主要是堆内内存),更细粒度的信息需要使用专门的分析工具。
jinfo:查看或者动态设置单个或多个的JVM标志,但是jvm不一定会响应。
jstack:线程栈信息
Jstat:查看JVM的一些指标:比较常用的有gc回收的统计信息,还可以看classLoader,compiler,metaSpace等等的一些信息
性能分析工具:1. 采样分析类型 2. 探查分析类型
1. 采样分析类:按照一定的频率来进行统计。优点:对应用的性能损耗小。 缺点:统计信息可能不是很精确,可能会漏掉一些信息。
2. 探查分析类:会对类的字节码进行加强,所以带来的性能损耗会比较大。优点是统计信息比较精确。
比较好用的采样类分析器:JFR+JMC
比较好用的dump分析器:MAT
gc日志也很重要,可以查看更细节的gc活动,不过有些细节的日志打印需要开启相关的jvm参数:
-XX:+PrintGCDetails
-XX:+PrintAdaptiveSizePolicy
pmap -x pid 从系统层面来查看应用的内存分配情况,包括c语言层面分配的native内存。
内存诊断经典例子:
https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html
java性能分析工具的更多相关文章
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...
- Java 性能分析工具 , 第 1 部分: 操作系统工具
引言 性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置 ...
- Java 性能分析工具
如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jia ...
- java性能分析工具 jconsole.exe
通过 Java visualMv结合 jconsole.exe 工具即可查看如图所示(Jconsole在JDK文件夹内,非JRE文件夹) 在Java Visualvm工具里面安装JTA插件,分析线 ...
- Windows平台下,Java性能分析工具VisualVM的Tomcat8的配置
VisualVM在JDK6版本及以上已经自带这个应用. 位置:C:\Program Files (x86)\Java\jdk1.8.0_60\bin\jvisualvm.exe 在Windows环 ...
- JVM性能分析工具详解--MAT等
获得堆转储文件 巧妇难为无米之炊,我们首先需要获得一个堆转储文件.为了方便,本文采用的是 Sun JDK 6.通常来说,只要你设置了如下所示的 JVM 参数: -XX:+HeapDumpOnOutOf ...
- Jvisualvm--JAVA性能分析工具
JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualV ...
随机推荐
- PHP 构造方法 __construct()和PHP 析构方法 __destruct()
PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...
- Django继承AbstractUser新建UserInfor Model时出现fields.E304错误
错误详情: SystemCheckError: System check identified some issues: ERRORS:app01.UserInfo.groups: (fields.E ...
- SQL语句 拆分某些字段,一行变多行
原文链接:http://bbs.csdn.net/topics/310219852 ------------------------------------- -- Author : liangCK ...
- String主要方法
No 方法名称 类型 描述 1 (字符数组)public String(char[] value) 构造 将字符数组变为字符串(Sring类对象) 2 public String(char[] val ...
- aruba 开启802.1X认证
1.即在ac上指定一个radius server认证 2.创建本地账户测试
- python字符串之format格式化函数
学习中~ 觉得应该系统地学习一下python,今天学习了字符串,以下是自己的笔记. 首先说一下format函数,用{}和:代替了%,比如: >>>“{} {} {}”.format( ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
- Linux_软件安装_jdk_tomcat_Mysql
双击要安装的文件(或右键传输) 1. JDK的安装1.1 准备工作:安装依赖的环境 yum install glibc.i686 yum –y install libaio.so.1 libgcc_s ...
- dskinlite(uieasy mfc界面库)使用记录4:listbox测试
先看效果图: xml代码: 作者qq:80101277,dskinlite交流qq群:138231653 <window name="listbox1" type=" ...
- pycharm设置文件编码
原文链接