You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询jmap -histo pid命令的具体输出内容及含义

嘿,我来给你把jmap -histo <pid>的输出拆解明白,你贴的示例里每一项的含义都给你讲清楚:

表头各列含义

  • num:输出的排序序号,结果是按类的总内存占用从高到低排列的
  • #instances:该类当前存在的实例总数
  • #bytes:该类所有实例占用的总内存字节数(注意是总大小,不是单个实例的内存)
  • class name:类的名称,这里有不少JVM内部的特殊格式,下面单独给你解释

特殊类名解析

你看到的那些带括号或尖括号的类名,要么是数组类型,要么是JVM用来管理元数据的内部类:

  • [C:对应Java里的char[](字符数组),通常和java.lang.String绑定出现,因为String内部就是用它来存储字符的,这个占内存高是很常见的情况
  • [B:对应byte[](字节数组),常用于存储二进制数据、IO缓冲区、序列化内容等场景
  • <constMethodKlass>、<methodKlass>:HotSpot虚拟机的内部元数据类,分别用来存储方法的常量信息、方法本身的结构定义
  • <constantPoolKlass>:存储类的常量池元数据,每个类都有自己的常量池,用来存放字符串常量、符号引用这些内容
  • <instanceKlassKlass>:描述普通实例类的元类,简单说就是“类的类”,JVM靠它来管理类的结构信息
  • [I:对应int[](整数数组)
  • java.lang.String:就是我们日常用的字符串类,实例数高说明你的程序里创建了大量字符串对象,可能要留意有没有重复创建、未及时回收的情况

小技巧补充

如果加上:live参数(jmap -histo:live <pid>),命令会先触发一次Full GC,只统计存活的对象,这样能更精准地定位内存中真正在被使用的对象,排查内存泄漏时特别有用。

内容的提问来源于stack exchange,提问作者Pwnstar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:40:26