jcmd:向JVM发送诊断的命令,jvm未必会全部响应,有些需要在jvm开启相应功能才能响应。个人平时用的不是很多。

SampleA: 添加        jcmd pid VM.native_memory detail 查看jvm内存分配情况(堆内内存、Code区域或者使用unsafe.allocateMemoryDirectByteBuffer申请的堆外内存),不包括底层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性能分析工具的更多相关文章

  1. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  2. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  3. 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

    如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...

  4. Java 性能分析工具 , 第 1 部分: 操作系统工具

    引言 性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置 ...

  5. Java 性能分析工具

    如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jia ...

  6. java性能分析工具 jconsole.exe

    通过 Java visualMv结合 jconsole.exe   工具即可查看如图所示(Jconsole在JDK文件夹内,非JRE文件夹) 在Java Visualvm工具里面安装JTA插件,分析线 ...

  7. Windows平台下,Java性能分析工具VisualVM的Tomcat8的配置

    VisualVM在JDK6版本及以上已经自带这个应用. 位置:C:\Program Files (x86)\Java\jdk1.8.0_60\bin\jvisualvm.exe   在Windows环 ...

  8. JVM性能分析工具详解--MAT等

    获得堆转储文件 巧妇难为无米之炊,我们首先需要获得一个堆转储文件.为了方便,本文采用的是 Sun JDK 6.通常来说,只要你设置了如下所示的 JVM 参数: -XX:+HeapDumpOnOutOf ...

  9. Jvisualvm--JAVA性能分析工具

    JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualV ...

随机推荐

  1. 使用MagickNet编辑图片

            ImageMagick是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片.图片切割.颜色替换.各种效果的应用,图片的旋转.组合,文本,直线,多边形,椭圆,曲线 ...

  2. 【GitHub】的基本使用

    GitHub是一个常用的版本管理工具,之前安装了window版的git但是一直没使用过,今天尝试一下,去百度了一下使用方法: 引用https://www.cnblogs.com/paulwhw/p/9 ...

  3. 【docker 入门 - 01】- Docker 在 Centos7 上安装与测试

    一.学习文档 官网网站: https://www.docker.com 中文网站:http://www.docker-cn.com 官方安装文档:https://docs.docker.com/ins ...

  4. 2018-2019-2 20165315 《网络对抗技术》Exp2+ 后门进阶

    2018-2019-2 20165315 <网络对抗技术>Exp2+ 后门进阶 一.实验要求 以下三个课题三选一 1.其他专用后门工具研究(CROSSRAT ...) 2.恶意代码绑定技术 ...

  5. hive上传下载数据

    ------------------------------------------read me--方式1:适用于工具传输--方式2:适用于手动临时性传输---------------------- ...

  6. 基于stm32f427实现SVPWM控制永磁同步开环转动

    1.SVPWM原理简介 PWM(Pulse Width Modulation)脉宽调整,这是一种利用面积等效原理实现的控制技术.SVPWM(Space Vector PWM)空间矢量PWM控制,因为控 ...

  7. 4.Redis客户端

    4.Redis客户端4.1 客户端通信协议4.2 Java客户端Jedis4.2.1 获取Jedis4.2.2 Jedis的基本使用方法4.2.3 Jedis连接池的使用方法4.2.4 Redis中P ...

  8. 利用mybatis generator实现数据库之间的表同步

    项目背景: 项目需要对两个服务器上的表进行同步,表的结构可能不一样.比如服务器A上的表i同步数据到服务器B上的表j,i和j的结构可能不一样,当然大部分字段是一样的.项目看起来很简单,网上一搜也是很多, ...

  9. Mysql必知必会 第一章 了解SQL

    第一章 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库的定义:保存有组织的数据的容器 数据库软件不是数据库,而是DBMS 1.1.2 表 表(Table)的定义:某种特定类型数据的结 ...

  10. 校赛F

    问题描述 例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3].换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, ...