jmap -histo
时间: 2024-12-27 22:30:08 浏览: 2
### jmap -histo 命令详解
#### 功能概述
`jmap -histo` 是 Java 内存分析工具之一,用于显示指定 Java 进程堆内存中对象的数量、大小统计直方图。当附加 `:live` 参数时,则仅统计存活的对象[^3]。
#### 使用方法
基本语法结构如下:
```bash
jmap -histo[:live] <pid>
```
- `<pid>` 表示目标 Java 应用程序的进程 ID。
- 如果加上 `:live` 选项,命令会遍历整个堆并计算活动对象的信息;如果不加此参数,默认情况下也会给出所有已分配过的对象的历史数据,即使这些对象已经被垃圾回收器清理掉[^2]。
#### 输出重定向至文件
为了便于后续处理或保存记录,可以将输出结果重定向到文件中:
```bash
jmap -histo:live <pid> > output_file_path
```
这行指令将会把当前进程中所有的活跃对象按类名排序,并将其数量与所占字节数写入指定路径下的文件里[^1]。
#### 示例解释
假设执行了带有 `:live` 标志的命令后得到的部分输出类似于下面这样:
```plaintext
num #instances #bytes class name
----------------------------------------------
1: 948 37920 java.util.concurrent.ConcurrentHashMap$Segment
...
```
这里每一列表达的意义分别是:
- **num**: 排序编号;
- **#instances**: 对应类型的实例总数;
- **#bytes**: 所有该类型实例占据的空间总和(单位为字节);
- **class name**: 类全限定名称[^4]。
通过上述信息可以帮助开发者了解应用程序运行期间不同种类对象的实际消耗状况,从而辅助性能调优工作。
阅读全文