JVM——》jmap详解

这篇具有很好参考价值的文章主要介绍了JVM——》jmap详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、概念

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文章来源地址https://www.toymoban.com/news/detail-485202.html

Attaching to process ID 24126, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13

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

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 5368709120 (5120.0MB)
   NewSize                  = 2684354560 (2560.0MB)
   MaxNewSize               = 2684354560 (2560.0MB)
   OldSize                  = 2684354560 (2560.0MB)
   NewRatio                 = 1
   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 = 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 Generation
   capacity = 2684354560 (2560.0MB)
   used     = 1371482032 (1307.9471893310547MB)
   free     = 1312872528 (1252.0528106689453MB)
   51.091687083244324% used

53559 interned Strings occupying 6180024 bytes.

五、输出结果详细介绍

# 查看 24126 进程的堆内存使用情况
jmap -heap 24126


jmap -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)   # 表示堆内存的最大容量为 5GB
   NewSize                  = 2684354560 (2560.0MB)   # 表示新生代(Young Generation)的初始容量为 2.5GB
   MaxNewSize               = 2684354560 (2560.0MB)   # 表示新生代的最大容量为 2.5GB
   OldSize                  = 2684354560 (2560.0MB)   # 表示老年代(Old Generation)的初始容量为 2.5GB
   NewRatio                 = 1                       # 表示新生代与老年代内存大小的比例为 1:1
   SurvivorRatio            = 8                       # 表示 Eden 区域与 Survivor 区域之间内存大小的比例为 8:1
   MetaspaceSize            = 21807104 (20.796875MB)  # 表示元数据区域的大小为 20.8MB
   CompressedClassSpaceSize = 1073741824 (1024.0MB)   # 表示压缩类空间的大小为 1GB
   MaxMetaspaceSize         = 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.5MB
   used     = 474955488 (452.9528503417969MB)         # 表示 Eden 区域已使用的内存大小为 452.95MB
   free     = 534298912 (509.5471496582031MB)         # 表示 Eden 区域尚未使用的内存大小为 509.55MB
   47.06003639914773% used
From Space:                                           # 表示 Survivor 0 区域的使用情况
   capacity = 834142208 (795.5MB)                     # 表示 Survivor 0 区域的最大容量为 795.5MB
   used     = 326834600 (311.69376373291016MB)        # 表示 Survivor 0 区域已使用的内存大小为 311.69MB
   free     = 507307608 (483.80623626708984MB)        # 表示 Survivor 0 区域尚未使用的内存大小为 483.81MB
   39.182119891000646% used
To Space:                                             # 表示 Survivor 1 区域的使用情况
   capacity = 793247744 (756.5MB)                     # 表示 Survivor 1 区域的最大容量为 756.5MB
   used     = 0 (0.0MB)                               # 表示 Survivor 1 区域尚未使用任何内存
   free     = 793247744 (756.5MB)                     # 表示 Survivor 1 区域尚未使用的内存大小为 756.5MB
   0.0% used
PS Old Generation                                     # 表示使用了 Parallel Scavenge(PS)老年代内存的信息
   capacity = 2684354560 (2560.0MB)                   # 表示老年代的最大容量为 2.5GB
   used     = 1371482032 (1307.9471893310547MB)       # 表示老年代已使用的内存大小为 1307.95MB
   free     = 1312872528 (1252.0528106689453MB)       # 表示老年代尚未使用的内存大小为 1252.05MB
   51.091687083244324% used                           # 表示老年代已使用内存占总内存的比例为 51.09%

53559 interned Strings occupying 6180024 bytes.

到了这里,关于JVM——》jmap详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 工作时使用redis,kafka查阅的资料链接

    不分先后 一 、redis查阅地址 一篇文章讲清楚Redis Redis原理介绍 一篇详文带你入门 Redis 内存耗尽后Redis会发生什么 Redis 深入了解键的过期时间 redis持久化机制 Redis延迟问题全面排障指南 一文搞定Redis高级特性与性能调优 Redis 在 Linux 系统的配置优化 Redis 的延迟问题,我找出原

    2024年02月12日
    浏览(38)
  • JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战

    性能优化 :通过JVM调优,可以提高Java应用程序的性能,减少响应时间,提高吞吐量,以更好地满足用户需求。性能优化可以加快应用程序的执行速度,减少延迟,提高用户体验。 内存管理 :JVM负责管理Java应用程序的内存。正确的内存管理可以避免内存泄漏和内存溢出等问

    2024年02月09日
    浏览(39)
  • CPU飙升 频繁GC排查-使用jmap histro命令来查看JVM中对象的直方图

    jmap是Java Virtual Machine Tool的一部分,它允许您生成JVM堆转储文件并执行各种诊断操作。可以使用jmap histro命令来查看JVM中对象的直方图。 以下是使用jmap histro命令的语法: 参数pid是JVM进程的ID。请注意,您需要具有足够的权限才能执行此命令。 执行上述命令后,您将获得JVM堆

    2024年01月19日
    浏览(49)
  • JDK 常用工具 —— jmap 详解

    jmap 是 JDK 自带的一个命令行工具,可以用于生成 Java Heap Dump 文件,以及查看 Java 进程中的内存使用情况。 本文内容来自一篇整理得非常详细的文档: https://juejin.cn/post/6844904062526160904 option:命令选项,常用选项如下: -heap:打印 Java 堆概要信息,包括使用的 GC 算法、堆配置

    2024年02月06日
    浏览(40)
  • 十万字图文详解mysql、redis、kafka、elasticsearch(ES)多源异构不同种类数据库集成、数据共享、数据同步、不同中间件技术实现与方案,如何构建数据仓库、数据湖、数仓一体化?

    数据库大数据量、高并发、高可用解决方案,十万字图文详解mysql、redis、kafka、elasticsearch(ES)多源异构不同种类数据库集成、数据共享、数据同步、不同中间件技术实现与方案,如何构建数据仓库、数据湖、数仓一体化?Delta Lake、Apache Hudi和Apache Iceberg数仓一体化技术架构

    2024年02月07日
    浏览(53)
  • HTTP协议Keep-Alive模式详解和HTTP头字段总结

    1、什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使

    2024年02月06日
    浏览(40)
  • Spring Boot集成Kafka详解

    Spring Boot是一个用于构建独立的、生产级的Java应用程序的框架,而Kafka是一种高吞吐量的分布式发布订阅消息系统。在本文中,我们将详细解释如何在Spring Boot项目中集成Kafka。 1. 添加依赖 首先,我们需要在项目的pom.xml文件中添加Spring Boot和Kafka的依赖。 2. 配置Kafka 接下来,

    2024年02月09日
    浏览(41)
  • 【flink番外篇】3、flink的source(内置、mysql、kafka、redis、clickhouse)介绍及示例(3)- kafka

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月03日
    浏览(55)
  • spring-kafka中ContainerProperties.AckMode详解

      近期,我们线上遇到了一个性能问题,几乎快引起线上故障,后来仅仅是修改了一行代码,性能就提升了几十倍。一行代码几十倍,数据听起来很夸张,不过这是真实的数据,线上错误的配置的确有可能导致性能有数量级上的差异,等我说完我们这个性能问题你就清楚了

    2024年02月08日
    浏览(47)
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(5) - kafka

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月03日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包