浅谈JDK14性能管理工具之jmap和jhat

yizhihongxing

浅谈JDK14性能管理工具之jmap和jhat

什么是jmap和jhat

jmap和jhat是JDK自带的性能管理工具,用于诊断和分析Java应用程序的内存使用情况。

  • jmap能够生成Java堆转储快照,可以获取Java堆中各种对象的详细信息。
  • jhat能够解析jmap生成的堆转储文件,将其中的数据展示为易于理解的HTML格式,方便开发者分析和调试。

jmap的使用

jmap可以在不停止应用程序的情况下,获取应用程序的Java堆内存使用情况。

用法:

jmap [option] pid

其中,pid是Java进程的进程id。

常用的option有以下几种:

  1. -heap:打印堆信息

示例:

jmap -heap 1234

其中,1234为Java进程的进程id。

输出示例:

 Attaching to process ID 1234, please wait...
 Debugger attached successfully.
 Server compiler detected.
 JVM version is 14
 itherHeap address: 0x00000000fab00000, size: 952M, used: 82M
  Eden space:
   capacity = 512.00 MB
   used     = 18.68 MB
   free     = 493.32 MB
   3.6484375% used
 ...
  1. -histo[:live] [path]:生成包含堆内存中各个对象大小的直方图信息并输出到文件中

示例:

jmap -histo:live /path/to/output/file 1234

其中,/path/to/output/file为输出直方图信息的文件路径,1234为Java进程的进程id。

jhat的使用

jhat能够将jmap生成的堆转储文件解析成易于理解的HTML格式,并提供可交互的浏览界面。

用法:

jhat [option] [dump-file]

其中,dump-file为jmap生成的堆转储文件。

常用的option有以下几种:

  1. -port \<port>:设置jhat的访问端口

示例:

jhat -port 8080 dump_file.bin

其中,dump_file.bin为jmap生成的堆转储文件。

在浏览器中访问http://\<hostname>:8080/即可进行交互式的堆转储分析。

  1. -J\<flag>:传递JVM启动参数

示例:

jhat -J-Xmx2048m dump_file.bin

其中,dump_file.bin为jmap生成的堆转储文件,-Xmx2048m表示jhat启动时最大占用内存为2GB。

示例

我们来演示以下基于jmap和jhat诊断Java应用程序内存泄漏的过程。

  1. 使用jmap生成堆转储文件
jmap -dump:live,format=b,file=dump_file.bin 1234

其中,1234为Java进程的进程id,dump_file.bin为生成的堆转储文件。

  1. 使用jhat展示堆转储文件
jhat dump_file.bin
  1. 在浏览器中访问http://localhost:7000/,可以看到生成的HTML报告。根据该报告,我们可以识别出内存泄漏的对象和代码的位置。

  2. 停止jhat进程后,可以删掉生成的堆转储文件:

rm dump_file.bin

除此之外,jhat还支持对堆转储文件进行筛选和分析,使开发者更加方便地定位问题和优化代码。

结语

通过使用jmap和jhat,我们能够更加方便地排查Java应用程序内存问题,提高开发效率,并且更好地优化代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈JDK14性能管理工具之jmap和jhat - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • vscode内网访问服务器的方法

    下面是详细的“vscode内网访问服务器的方法”的攻略。 什么是vscode内网访问服务器? 通常情况下,我们的电脑和服务器一般都处于同一个局域网,如果我们直接在vscode上连接服务器,即使服务器开了对外映射的端口,也无法直接连接,这就是内网访问。 解决方法 要解决这个问题,我们可以通过在本地电脑与服务器之间建立一个SSH隧道,来实现内网访问。下面我们将具…

    database 2023年5月22日
    00
  • MySQL备份

    备份单个数据库   MySQL数据库自带一个很好的备份命令,就是mysqldump。   基本语法:mysqldump -u 用户名 -p 数据库名 > 备份的文件名  示例 1  备份一个库 [root@localhost ~]# mysql -uroot -p123456 -S /tmp/mysql_3306.sock mysql> show…

    MySQL 2023年4月16日
    00
  • MYSQL的存储过程和函数简单写法

    MySQL是一款常用的关系型数据库管理系统,支持存储过程和函数的编写。这里将详细讲解MySQL的存储过程和函数的简单写法,并提供几个示例说明。 存储过程的简单写法 在MySQL中,存储过程就是一个SQL语句集合,可以理解为一种特殊的函数。使用存储过程可以减少重复的SQL语句,提高代码的复用性和执行效率。以下是MySQL存储过程的简单写法: CREATE PR…

    database 2023年5月22日
    00
  • MYSQL 数据库命名与设计规范

    下面详细讲解一下MYSQL数据库命名与设计规范的完整攻略。 命名规范 数据库名称 必须全部小写 使用下划线分隔单词 避免使用 ‘-‘ 或 ‘.’ 等特殊字符 名称应该简明扼要,能够表达数据库的主要功能 例如,一个视频网站的数据库名称可以为 video_site。 表名称 必须全部小写 使用下划线分隔单词 避免使用 ‘-‘ 或 ‘.’ 等特殊字符 表名应该简明…

    database 2023年5月22日
    00
  • MySQL主从复制的原理及配置方法(比较详细)

    MySQL主从复制的原理及配置方法 1. 原理 MySQL主从复制是一种数据备份和数据读写分离的解决方案,能够实现多台MySQL服务器之间的数据同步。主从复制主要由一个主库和多个从库组成,主库将数据更新操作通过二进制日志(Binary Log)记录下来,从库通过读取主库的二进制日志实现数据的同步。 主从复制的原理大致如下: 首先需要在主库上启用二进制日志(B…

    database 2023年5月21日
    00
  • python 连接数据库mysql解压版安装配置及遇到问题

    Python 连接 MySQL 解压版安装配置及遇到问题 安装MySQL 首先需要先下载 MySQL,网址为 https://www.mysql.com/downloads/ 。 在页面中选择“MySQL Community Server”,下载并解压到本地。 安装Python 如果还未安装 Python,可以前往 https://www.python.or…

    database 2023年5月21日
    00
  • PHP 分页类(模仿google)-面试题目解答

    首先,在这个面试题目中,我们需要讲解的是一个名为“PHP 分页类(模仿google)”的完整攻略。根据题目要求,我们需要使用markdown格式文本进行回答。 1. 简介 “PHP 分页类(模仿google)”是一种专门用于生成分页页面的工具类,可以将一个长列表分割成若干子列表来减少页面加载时间,提高用户体验。在本文中,我们将介绍如何使用这个分页类。 2. …

    database 2023年5月21日
    00
  • 详解Linux 主机网络接入配置

    详解Linux主机网络接入配置 在Linux主机中,网络接入配置是很重要的一个环节,本文将详细讲解Linux主机网络接入配置的完整攻略。 确认网络适配器名称 在进行网络接入配置前,需要先确认使用的网络适配器名称。可以通过以下命令查看: ifconfig 例如,系统中有eth0和eth1两个适配器: eth0 Link encap:Ethernet HWadd…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部