JVM调优小工具之jmap

jmap-查看实例个数以及占用内存大小 jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。 可以使用jmap生成Heap Dump。 前置启动程序 事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用 C:\Users\swadi>jps 19672 Jps 12204 MyApplication #本地启动的Java进程 ... 阅读详情
简介

jmap(Java Memory Map)可用于获取堆转储快照、查询呢finalize队列、查询堆和方法区详细信息(如:空间使用率、垃圾收集器类型)。

使用方法(出现异常,参考这里解决)

jmap [ options ] pid :对本地虚拟机进程执行操作。
jmap [ options ] executable core :对可执行Core File执行操作。
jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP :对远程服务执行操作。

options :

options作用
空打印共享对象映射。对于目标JVM中加载的每个共享对象将打印共享对象文件的起始地址、映射大小和完整路径
-dump生成堆转储快照。命令格式为 -dump:[live,] format=b, file=filename 加上[live,]选项,则只会dump出存活对象
-finalizerinfo显示在F-Quene中等待finalizer线程执行finalize()方法的对象,只在Linux、Solaris系统下有效
-heap显示堆信息,如参数配置、分代情况、垃圾回收器等。除此以外还会显示常量池中字符串数量和占用空间大小
-histo[:live]显示堆中对象统计信息。包括类、对象数量、占用内存(byte)、类全限定名。加上[:live]则只会统计存活对象
-clstats打印类加载器相关的信息。对于每个类加载器,将打印其名称、活动程度、地址、父类加载器、以及已加载类的数量和大小
-F强制执行。在jmap -dump 或 jmap -histo没有响应时使用-F强制执行(这种模式下live选项会失效)
-J向JVM传递参数
使用示例
  1. jmap 14508:打印共享对象映射。
david@UX501:~$ jmap 14508
Attaching to process ID 14508, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b01
0x000055c84251e000	6K	/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
0x00007f520c1ff000	34K	/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libzip.so
0x00007f520c410000	183K	/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjava.so
0x00007f520c63e000	66K	/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libverify.so
0x00007f520c84f000	34K	/usr/lib/x86_64-linux-gnu/librt-2.28.so
0x00007f520c95a000	98K	/usr/lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007f520c974000	1542K	/usr/lib/x86_64-linux-gnu/libm-2.28.so
0x00007f520caf7000	1533K	/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
0x00007f520cc7b000	13500K	/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
0x00007f520dbcf000	1781K	/usr/lib/x86_64-linux-gnu/libc-2.28.so
0x00007f520dd90000	14K	/usr/lib/x86_64-linux-gnu/libdl-2.28.so
0x00007f520dd95000	54K	/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so
0x00007f520dfa3000	110K	/usr/lib/x86_64-linux-gnu/libz.so.1.2.11
0x00007f520dfc0000	143K	/usr/lib/x86_64-linux-gnu/libpthread-2.28.so
0x00007f520dfe8000	54K	/usr/lib/x86_64-linux-gnu/libnss_files-2.28.so
0x00007f520e001000	161K	/usr/lib/x86_64-linux-gnu/ld-2.28.so
  1. jmap -dump:live,format=b,file=/home/david/Desktop/dump-20200706.hprof 14508:生成dump文件
david@UX501:~$ jmap -dump:live,format=b,file=/home/david/Desktop/dump-20200706.hprof 14508
Dumping heap to /home/david/Desktop/dump-20200706.hprof ...
Heap dump file created
david@UX501:~$
  1. jmap -finalizerinfo 14508:查看正在等待执行finalize()方法的对象
david@UX501:~$ jmap -finalizerinfo 14508
Attaching to process ID 14508, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b01
Number of objects pending for finalization: 0
  1. jmap -heap 14508:查看与堆相关的信息
david@UX501:~$ jmap -heap 14508
Attaching to process ID 14508, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b01

using thread-local object allocation.
Parallel GC with 8 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 3131047936 (2986.0MB)
   NewSize                  = 65536000 (62.5MB)
   MaxNewSize               = 1043333120 (995.0MB)
   OldSize                  = 131596288 (125.5MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 49807360 (47.5MB)
   used     = 3984688 (3.8000946044921875MB)
   free     = 45822672 (43.69990539550781MB)
   8.000199167351974% used
From Space:
   capacity = 7864320 (7.5MB)
   used     = 0 (0.0MB)
   free     = 7864320 (7.5MB)
   0.0% used
To Space:
   capacity = 7864320 (7.5MB)
   used     = 0 (0.0MB)
   free     = 7864320 (7.5MB)
   0.0% used
PS Old Generation
   capacity = 55574528 (53.0MB)
   used     = 5688328 (5.424812316894531MB)
   free     = 49886200 (47.57518768310547MB)
   10.235494937536851% used

688 interned Strings occupying 46272 bytes.

  1. jmap -histo:live 14508:查看对象统计信息
david@UX501:~$ jmap -histo:live 14508

 num     #instances         #bytes  class name
----------------------------------------------
   1:         95004        3040128  java.util.HashMap$Node
   2:        189966        3039456  java.lang.Integer
   3:            12         525248  [Ljava.util.HashMap$Node;
   4:           930          82496  [C
   5:           478          54504  java.lang.Class
   6:           531          26840  [Ljava.lang.Object;
   7:            21          25288  [B
   8:           918          22032  java.lang.String
   9:            94           3760  java.lang.ref.SoftReference
  10:            91           3584  [I
  11:           111           3552  java.util.Hashtable$Entry
  12:             8           3008  java.lang.Thread
  1. jmap -clstats 14508:查看类加载器相关的信息
david@UX501:~$ jmap -clstats 14508
Attaching to process ID 14508, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b01
finding class loader instances ..done.
computing per loader stat ..done.
please wait.. computing liveness.liveness analysis may be inaccurate ...
class_loader	classes	bytes	parent_loader	alive?	type

<bootstrap>	411	794860	  null  	live	<internal>
0x0000000705601aa0	1	893	0x0000000705604d68	live	sun/misc/Launcher$AppClassLoader@0x00000007c000f298
0x0000000705604d68	0	0	  null  	live	sun/misc/Launcher$ExtClassLoader@0x00000007c000f630

total = 3	412	795753	    N/A    	alive=3, dead=0	    N/A  

未经授权,禁止转载。

JVM 调优常用命令 如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!! 阅读详情

相关推荐

【Java】Jvm调优——结合项目总结调优心得

一、前言 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java 做到一定程度就会对jvm有一定的了解,了解运行时内存是什么样的,了解类加载机制等等。如果要做的更好的话,就要了解jvm性能调优的内容了。在这篇博客,小编结合自己的项目经验,对jvm调优的一些技巧做一些总结。当然现在的水平也是有一定限制的,希望有问题的地方,可以指出。 二、根据什么来判断有性能问题? &nbs...

哈士奇 1万+

JVM总结

继承ClassLoader父类重写findClass方法,注意不是重写loadClass,否则不会走双亲委派的流程读取类的字节码(IO流操作)调用父类(ClassLoader)的defineClass方法加载类使用者调用自定义类加载器的loadClass方法来进行类的加载。

FMFLV的博客 1万+

JVM 性能调优监控工具之Jmap和 Jhat

JVM 性能调优监控工具之Jmap和 Jhat 文章目录JVM 性能调优监控工具之Jmap和 Jhat前言一、什么是jmap和jhat?二、方式一1.jmap导出堆内存2.以本人项目服务器为例3.查看进程堆内存使用情况4.查看堆内存中的对象数目二、方式二(dump导出文件方式)1.jmap把进程内存dump到文件中2.使用jhat查看存储文件总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是jmap和jhat? jmap命令是把进程内存使用情况转存到dump文件中,再用jhat分

zhx__的博客 4163

PX4_jmavsim仿真之问题解决篇

1.安装鼠标,键盘同步软件Synergy而导致在linux中删去了部分ros包。2. 尝试使用mavsdk与PX4进行通信需要一个仿真环境。于是尝试采用PX4自带的仿真环境jmavsim。 遇到的问题: Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertionversion->filename == NULL || ! _dl_name_match_p (version->filenam` 解决方法,检查

Chasing的博客 3650

JVM调优篇

点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 基础概念 一般JVM调优,重点在于调整JVM堆大小、调整垃圾回收器 JVM调优常用参数 -Xmx1024m:最大堆内存,当物理内存不超过192m时最大堆内存为物理内存的一半,否则为物理内存的四分一 -Xms1024m:最小堆内存,一般设置为与-Xmx同等值 jcmd:专用于查看JVM状态,可以查看正在运行的进程,会显示出进程号 jmap -heap 10864:查看进程号为.

liaofeifeifeifei的博客 2712

jvm 性能调优之 jmap

概述 Java Memory Map,打印出某个java进程内存中所有‘对象’的情况(如:产生那些对象,及其数量),可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。 Usage: jmap [option] <pid> (to connect to running process) jmap [option] <executable <core> (to connect to a core file

齐梦星空 579

linux 指令使用大全

目录 md5sum su与su - 的区别 从windows上传下载文件 rz参数 sz参数 Linux命令行中的 符号 '\' ,' --'的作用 profile、bash_profile、bashrc的用途与区别 /和~的区别 Ifconfig: Ping 查看端口占用情况 查看端口属于哪个程序 lsof命令详解 ls linux多命令的顺序执行 文件下载 ...

阿华田的博客 1万+

apache服务出现Forbidden 403问题的解决方法总结

在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下。http 403错误是拒绝访问的意思,有很多原因的。还有,这些问题在win平台的Apache里一样会发生!我按照经验总结的主要有以下4种原因! 本人测试的环境 是:Scientific Linux 5.3(与RHEL和CentOS百分百兼容!),其它版本的Linux应该通用,没测试。 1. 访问的文档权限不够。要755以上权限。解决方法:用命令chmod 755 /var/www/ 或其他相应目录。 2. SELinux或防火墙的原因。解决方法:先关闭SELinux和让防火墙

JVM篇之调优

一、概述 1.了解JVM调优之前我们需要知道两个概念:吞吐量(TPS)和响应时间(RT)。 吞吐量:指系统在单位时间内处理请求的数量。对于并发系统,通常需要用吞吐量作为性能指标。 响应时间:指系统对请求作出响应的时间。对于单用户的系统,响应时间可以很好地度量系统的性能。 2.什么是JVM调优? 简单理解,JVM调优主要就是为了解决系统运行时慢、卡顿、OOM、死锁等问题。 其实上面所说的问题存在很多方面的原因,比如网络波动导致响应时间慢、数据库查询慢、死锁等,今天我们主要分析JVM层面的,而JVM调优,主要是

qq_42809478的博客 1万+

如何快速获取SAMM、SMIC等主流微表情数据集?完整申请指南(附避坑技巧)

本文提供了获取SAMM、SMIC等主流微表情数据集的完整申请指南,包括申请前的准备工作、分步申请流程、协议谈判技巧以及数据使用与维护策略。特别针对高分辨率动态捕捉和多模态同步数据等热词,帮助研究者高效获取高质量数据集,避免常见陷阱。

weixin_29057163的博客 421

数据增强综述及albumentations代码使用

数据增强综述及albumentations使用基于基本图形处理的数据增强 本文涉及到的资料: 1.A survey on Image Data Augmentation for Deep Learning 2.Albumentations: Fast and Flexible Image Augmentations 3.Code 基于基本图形处理的数据增强 1.翻转;2.旋转;3.仿射变换;4.色彩空间(RGB、YUV、CMY、HSV,在图像情感分析中会影响标签。最简单的方法就是只改变一个通道。对比度、直方

qq_41917697的博客 6680

JVM 性能调优 -- JVM常用调优工具【jps、jstack、jmap、jstats 命令】

总结:本篇分享 JDK 自带的一些 JVM 调优工具的使用,使用 jps、jinfo、jmap、jstack、jhat、jstat 命令来查看 Java 应用程序的堆栈信息,来辅助我们进行 JVM 调优,关于可视化工具的部分我们下一篇再来分享,希望可以帮助到有需要的朋友们。可以看到执行 jinfo 命令打印了非常多的信息,包括 Java 版本、环境信息、JVM 参数等非常多的信息,这些信息并不是我们都要关注的,如果我们想要少看到一些信息,可以使用 jinfo -flags 线程pid 命令。

weixin_42118323的博客 2416

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 867

jvm调优到底是要干什么

面试总问的jvm调优到底是要干什么 请注意,jvm调优,调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了,保证服务的稳定,gc永远会是Java程序员需要考虑的不稳定因素之一。复杂和高并发下的服务,必须保证每次gc不会出现性能下降,各种性能指标不会出现波动,gc回收规律而且干净,找到合适的jvm设置。详细了解jvm的话请看神书《深入理解java虚拟机》。说些题外话...

lelemom的博客 2万+

智能气象站:ESP32驱动的心知天气数据可视化实践

本文详细介绍了基于ESP32微控制器和心知天气API构建智能气象站的完整实践。通过Arduino开发环境,实现天气数据的获取、JSON解析与OLED屏可视化展示,涵盖硬件连接、API配置、低功耗优化及部署问题排查,为物联网开发者提供实用指南。

jump7的博客 210

从零到一:Bioconductor新手入门与R包安装实战

本文详细介绍了Bioconductor在生物信息学中的重要性及其R包安装实战指南。从环境准备到BiocManager的使用,再到常见问题排查,帮助新手快速掌握这一强大工具。特别推荐org.Hs.eg.db等核心工具包,助力基因注释和功能分析,提升研究效率。

weixin_29061041的博客 418

JVM调优三板斧,快速掌握调优的核心与思路

如何从调优小白走向调优高手 说起JVM调优,大伙儿可能瞬间头皮发麻。"好家伙,和调优沾边儿的事儿,不是我这个段位的小新手能解决的"。 于是赶紧找来了技术大拿,看大拿三下五除二排查出了问题原因,给出了优化方案。此时,我们的眼里放着光,一脸崇拜的望着大拿,幻想着哪天能成为他这样出色的大佬。 这篇文章,就是让你学会调优,掌握一个属于自己的调优节奏与思路。 快速了解调优 如果你对调优没有什么概念,那么我们先说说调优是什么。 所谓调优,就是你的系统生病了。此时,我们就是一个诊所。系统找我们来治治病。 我

weixin_47184173的博客 5269

Comsol超声空化气泡仿真:从基础理论到工业应用实践

本文详细介绍了Comsol超声空化气泡仿真的基础理论及工业应用实践。通过解析超声空化现象、Comsol模型搭建流程及求解器优化技巧,帮助工程师掌握气泡仿真技术,提升超声波清洗和乳液制备等工业应用的效率与质量。

weixin_27966471的博客 252

JVM调优工具详解及调优实战

本文详细介绍了Java性能优化中JVM调优的关键工具与实战案例。主要内容包括: JVM调优工具详解:jmap(内存分析)、jstack(线程诊断)、jinfo(参数查看)、jstat(GC统计)的使用方法和命令示例 三大实战优化案例:频繁Full GC优化、内存泄漏处理、电商系统参数调整,展示了从问题定位到解决方案的全过程 最佳实践指南:提出"减少对象进入老年代"等核心原则,并给出完整的监控-分析-调整-验证四步优化流程,同时总结了常见问题的诊断与解决方法。 通过系统化的工具使用和案例分

慢慢 1275

自动驾驶仿真:基于Carsim开发的加速度请求模型

1、自动驾驶行业中,算法端对于纵向控制的功能预留接口基本都是加速度,我们需要给控制器仿真加速度的信号,控制器才会实现对纵向功能的控制。2、Carsim或者其他动力学软件,主要提供者节气门开度和主缸压力进行控制。我们在进行联合仿真时,往往都要通过PID的方式将请求加速度转换成对应的节气门开度与主缸压力传给动力学软件进行闭环控制。

zataji的博客 6914

带隙基准电路实战:温度补偿与流片调优全解析

带隙基准(BGR)是模拟芯片中实现高精度、低温漂电压参考的核心电路,其本质是利用硅材料禁带宽度的物理稳定性,通过PTAT(正温度系数)与CTAT(负温度系数)电压的加权叠加抵消温度影响。原理上需兼顾一阶线性补偿与二阶曲率校正,技术价值在于支撑ADC/DAC/LDO等关键模块的精度与可靠性。典型应用场景涵盖车规级MCU、工业传感器和高精度电源管理芯片。工程落地难点集中于工艺偏差、运放失调、寄生效应及版图热电耦合——这正是‘带隙基准设计’与‘带隙基准调优’的根本分野。本文聚焦真实流片经验,深入拆解Widlar架

weixin_42628280的博客 254

springboot-jvm调优

JVM调优,使用jvisualvm,jconsole,jmap,jps等。

Java自学笔记-springBoot微服务 1976

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jvm性能调优工具之 jmap使用详解

本文来说下jvm性能调优工具之 jmap使用详解 文章目录概述 概述

wh柒八九的博客 4068

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

性能调优 14. JVM调优工具详解及调优实战

‌‌‌  市面上调优工具无非就是JDK基础调优命令的整合,这边调优使用JDK1.8进行。‌‌‌  如果启动一个应用程序在运行,可用jps查看其进程id,接着就可以用JDK自带各种命令优化应用。‌‌‌  用jps查看JAVA进程的进程ID。‌‌‌  此命令可以用来查看内存信息,实例个数以及占用内存大小。‌‌‌  主要命令 ‌‌‌  输出结果格式如下:‌‌‌  1. num:序号。‌‌‌  2. instances:实例数量。‌‌‌  3. bytes:这些实例总共占用空间大小字节。‌‌‌  4. classn

xingwanganfang的博客 1310

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JVM调优介绍

一、什么是JVM调优 1.根据需求进行JVM规划和预调优 2.优化运行JVM运行环境(慢,卡顿) 3.解决JVM运行过程中出现的各种问题(OOM等) 二、JVM调优是主要调什么 JVM调优主要是减少GC的频率和Full GC次数,STW(stop the world)的停顿时间和次数 三、什么是STW STW指的是GC事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何响应, 有点像卡死的感觉,这个停顿称为STW。Java中一种全局暂停现象,全局停顿,所有Jav

l664938026的博客 4650

【JVM调优】如何进行JVM调优?就这一篇就够

调用System.gc():调用 System.gc() (用于请求 JVM 执行垃圾回收)时,JVM 会建议执行 Full GC(具体是否执行取决于垃圾回收器实现的System.gc()逻辑,例如Parallel GC、CMS等传统垃圾回收器该方法会Full GC,而G1、ZGC等现代回收器不会Full GC)。如果这些值呈上涨趋势,则说明该 Java 程序的老年代内存已使用量在不断上涨,这意味着无法回收的对象在不断增加,因此很有可能存在内存泄漏(不再使用的对象仍然被引用,导致GC无法回收)。

Edward的博客 1449
上一篇: JVM调优小工具之jinfo
下一篇: JVM调优小工具之jhat
小菜大白
博客等级 码龄10年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值