java - JMap 替代品可用吗?

标签 java profiling jmap

当我运行下面的 jmap 命令时:

jmap -histo 14104

我能够看到我的对象的非常好的输出,有实例,使用的字节数。

 num     #instances         #bytes  class name
----------------------------------------------
   1:       1308333      398374280  [C
   2:         55058       84410136  [B
   3:       1548041       49537312  java.lang.ref.Finalizer
   4:       1584594       38030256  java.util.HashMap$Entry
   5:       1327543       31861032  java.lang.String
   6:        765682       25734336  [Ljava.lang.Object;

但不幸的是,这不受 Oracle 支持,并且在最新的 Windows 和 Linux JDK 发行版中不可用。有人可以帮忙推荐 jmap 的替代品吗?

最佳答案

首先,jmap在为 %TMP%\hsperfdata_<username> 设置所有权限后,在 Windows 10 和 JDK 1.8.0_192 上为我工作目录。

其次,而不是jmap你可以使用 VisualVM工具:

VisualVM in Memory Sampler Mode

它有一个 Sampler实用程序,它允许检查堆直方图。

如果您在左侧列表中没有看到您的 Java 进程,请尝试使用 -Dcom.sun.management.jmxremote属性(property)。

关于java - JMap 替代品可用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833693/

相关文章:

java - TIBCO ems 超出队列限制

java - 减少静态方法/变量和多个属性文件之间的代码重复

c# - 使用VS2010 Profiler进行内存测量

java - 如何在 JMH 中查看调用树分析?

java - blazesds 消耗大量内存

java - 为什么我只能看到来自 jmap -permstat 的 "dead"类加载器( Bootstrap 除外)?

java - jmap [option] <executable <core> - 这是什么意思以及如何使用它?

JAVA方法中按引用传递错误

java - 是否可以将具有 2 个参数的函数作为 java 8/11 中另一个函数的参数传递?

Erlang VM : scheduler runtime information