JVM——》jmap详解

news/2024/11/29 1:35:39/

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

JVM——》jmap详解

  • 一、概念
  • 二、作用
  • 三、参数
  • 四、示例
    • 1、查看运行中的 Java 进程
    • 2、查看 24126 进程的堆内存使用情况
  • 五、输出结果详细介绍

一、概念

jmap -heap 是一个Java 命令行工具,用于获取Java 进程的堆内存信息。它会输出 Java 进程的整体堆内存使用情况,包括 heap 总大小、已使用大小、空闲大小等。同时还会输出堆内存中各种对象所占用的空间大小以及数量,如类、字符数组、字符串等。

二、作用

jmap -heap 命令通常用于诊断和调试 Java 应用程序的内存问题,例如内存泄漏内存溢出等。
通过 jmap -heap 命令获取到的堆内存信息可以帮助开发人员更加全面地了解 Java 应用程序的内存使用情况,找出内存问题的根本原因,并进行相应的优化和改进。
在使用 jmap -heap 命令时,需要注意以下几点:

  1. jmap -heap 命令会暂停 Java 进程的执行并进行内存快照,可能会对应用程序的性能产生一定的影响。
  2. jmap -heap 命令只能用于 HotSpot 虚拟机,不适用于其他虚拟机实现。
  3. jmap -heap 命令可能会产生较大的输出,建议将输出重定向到文件中以便后续分析。

三、参数

jmap -heap 命令是一个 Java 命令行工具,用于获取 Java 进程的堆内存信息。它包含以下参数:

  1. -dump:导出 Java 堆内存中的内容到文件中。
  2. -file:指定导出文件的文件名,如果不指定则默认为 java_pid[进程 ID].hprof。
  3. -F:强制执行指令,即使 JVM 正在退出或者已经退出。
  4. -histo:打印 Java 堆内存中各个对象类型的实例数目和大小。
  5. -J:传递参数给 JVM,例如“-J-Xms512m”。

四、示例

1、查看运行中的 Java 进程

ps -ef | grep java

2、查看 24126 进程的堆内存使用情况

jmap -heap 24126

Attaching to process ID 24126, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13using thread-local object allocation.
Parallel GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 5368709120 (5120.0MB)NewSize                  = 2684354560 (2560.0MB)MaxNewSize               = 2684354560 (2560.0MB)OldSize                  = 2684354560 (2560.0MB)NewRatio                 = 1SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 1009254400 (962.5MB)used     = 474955488 (452.9528503417969MB)free     = 534298912 (509.5471496582031MB)47.06003639914773% used
From Space:capacity = 834142208 (795.5MB)used     = 326834600 (311.69376373291016MB)free     = 507307608 (483.80623626708984MB)39.182119891000646% used
To Space:capacity = 793247744 (756.5MB)used     = 0 (0.0MB)free     = 793247744 (756.5MB)0.0% used
PS Old Generationcapacity = 2684354560 (2560.0MB)used     = 1371482032 (1307.9471893310547MB)free     = 1312872528 (1252.0528106689453MB)51.091687083244324% used53559 interned Strings occupying 6180024 bytes.

五、输出结果详细介绍

# 查看 24126 进程的堆内存使用情况
jmap -heap 24126jmap -heap 24126# 表示 jmap 正在尝试连接并附加到一个进程ID为 24126 的Java进程
Attaching to process ID 24126, please wait...
# 表示 jmap 已经成功附加到了该进程并成功连接了调试器
Debugger attached successfully.
# 表示该 Java 进程正在运行 Server 模式的编译器
Server compiler detected.
# 表示该 Java 程序的版本号为 25.121-b13
JVM version is 25.121-b13# 表示 Java 进程正在使用线程本地对象分配的方式
using thread-local object allocation.
# 表示 Java 进程正在使用 4 个线程来进行并行垃圾回收
Parallel GC with 4 thread(s)# 堆内存配置信息
Heap Configuration:MinHeapFreeRatio         = 0                       # 表示在堆内存达到最大值之前,堆内存中不允许有任何自由空间MaxHeapFreeRatio         = 100                     # 表示在堆内存达到最大值之后,堆内存中允许全部是自由空间MaxHeapSize              = 5368709120 (5120.0MB)   # 表示堆内存的最大容量为 5GBNewSize                  = 2684354560 (2560.0MB)   # 表示新生代(Young Generation)的初始容量为 2.5GBMaxNewSize               = 2684354560 (2560.0MB)   # 表示新生代的最大容量为 2.5GBOldSize                  = 2684354560 (2560.0MB)   # 表示老年代(Old Generation)的初始容量为 2.5GBNewRatio                 = 1                       # 表示新生代与老年代内存大小的比例为 1:1SurvivorRatio            = 8                       # 表示 Eden 区域与 Survivor 区域之间内存大小的比例为 8:1MetaspaceSize            = 21807104 (20.796875MB)  # 表示元数据区域的大小为 20.8MBCompressedClassSpaceSize = 1073741824 (1024.0MB)   # 表示压缩类空间的大小为 1GBMaxMetaspaceSize         = 17592186044415 MB       # 表示元数据区域的最大容量为 16 EB(exabytes)G1HeapRegionSize         = 0 (0.0MB)               # 表示 G1 垃圾回收器使用的内存段的大小为 0# 堆内存的使用情况
Heap Usage:
PS Young Generation                                   # 表示使用了 Parallel Scavenge(PS)年轻代内存的信息
Eden Space:                                           # 表示 Eden 区域的使用情况capacity = 1009254400 (962.5MB)                    # 表示 Eden 区域的最大容量为 962.5MBused     = 474955488 (452.9528503417969MB)         # 表示 Eden 区域已使用的内存大小为 452.95MBfree     = 534298912 (509.5471496582031MB)         # 表示 Eden 区域尚未使用的内存大小为 509.55MB47.06003639914773% used
From Space:                                           # 表示 Survivor 0 区域的使用情况capacity = 834142208 (795.5MB)                     # 表示 Survivor 0 区域的最大容量为 795.5MBused     = 326834600 (311.69376373291016MB)        # 表示 Survivor 0 区域已使用的内存大小为 311.69MBfree     = 507307608 (483.80623626708984MB)        # 表示 Survivor 0 区域尚未使用的内存大小为 483.81MB39.182119891000646% used
To Space:                                             # 表示 Survivor 1 区域的使用情况capacity = 793247744 (756.5MB)                     # 表示 Survivor 1 区域的最大容量为 756.5MBused     = 0 (0.0MB)                               # 表示 Survivor 1 区域尚未使用任何内存free     = 793247744 (756.5MB)                     # 表示 Survivor 1 区域尚未使用的内存大小为 756.5MB0.0% used
PS Old Generation                                     # 表示使用了 Parallel Scavenge(PS)老年代内存的信息capacity = 2684354560 (2560.0MB)                   # 表示老年代的最大容量为 2.5GBused     = 1371482032 (1307.9471893310547MB)       # 表示老年代已使用的内存大小为 1307.95MBfree     = 1312872528 (1252.0528106689453MB)       # 表示老年代尚未使用的内存大小为 1252.05MB51.091687083244324% used                           # 表示老年代已使用内存占总内存的比例为 51.09%53559 interned Strings occupying 6180024 bytes.

http://www.ppmy.cn/news/382887.html

相关文章

构建工具 Vite、Webpack、Rollup对比

Webpack介绍 热更新方面:webpack支持HMR,但是webpack需要全部重新编译并更新,效率较低 tree-shaking:webpack2开始支持且消除效果不好,但是webpack5有更好的tree-shaking(去除未使用代码) 分包…

使用一键安装工具快速搭建 ESP-IDF 开发环境 (Windows)

我们收到用户对 ESP-IDF SDK 软件开发环境感到搭建难、门槛高的反馈。为解决用户在此方面的问题。为此,我们推出本期教程介绍在 Windows 操作系统下使用一键安装工具快速搭建 ESP-IDF 开发环境。 您可以观看下面的教程视频,也可以阅读接下来本篇的图文教…

百度CDN配置TLS

概述 为了保障您互联网通信的安全性和数据完整性,百度智能云CDN提供TLS版本控制功能。您可以根据不同域名的需求,灵活地配置TLS协议版本。 TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提…

20230614使用360安全卫士的断网急救箱解决不能上网的问题

20230614使用360安全卫士的断网急救箱解决不能上网的问题 2023/6/14 12:29 未连接到互联网 网络连接错误,请检查您的网络设置 刷新 无法访问此网站youtube.com 的响应时间过长。 请试试以下办法: 检查网络连接 检查代理服务器和防火墙 运行 Windows 网…

Python 线程池

大家都知道当任务过多,任务量过大时如果想提高效率的一个最简单的方法就是用多线程去处理,比如爬取上万个网页中的特定数据,以及将爬取数据和清洗数据的工作交给不同的线程去处理,也就是生产者消费者模式,都是典型的多…

2021-06-16

NVIDIA入门级 GPU NVIDIA发布了三款入门级别的工作站GPU, 分别是NVIDIA T400、T600、T1000, 基于NVIDIA Turing™ 架构构建的,体积精巧,性能强大。 具有Turing架构的多处理器/CUDA内核,性能比上一代NVIDIA Pascal™…

电脑怎么锁定EDID

要锁定EDID,需要使用特定的软件或驱动程序。具体方法可能因计算机系统和显示器而异,但通常可以通过以下步骤来实现: 下载并安装用于锁定EDID的软件或驱动程序。 运行软件并选择要锁定的显示器。 选择要锁定的分辨率和刷新率。 保存设置并重启…

Ubuntu18.04 + NVIDIA Quadro T1000显卡驱动安装

Ubuntu18.04 NVIDIA Quadro T1000显卡驱动安装 下载官方驱动安装文件 官网搜索,下载对应版本的run file 禁用Nouveau sudo gedit /etc/modprobe.d/blacklist.conf在文件末尾添加: blacklist nouveau options nouveau modeset0更新禁用规则 sudo u…