以编程方式打印类直方图

Tru*_*tin 9 java class instance histogram

有没有办法以编程方式在当前的Java应用程序上打印最常用的N类?

样本输出:N = 10

num   #instances    #bytes  class name
--------------------------------------
  1:        23     4723136  [I
  2:        19     4718928  [J
  3:        18     4718880  [D
  4:     73925     1774200  java.lang.String
  5:       208     1226400  [C
  6:        28     1205064  [B
  7:        18     1179936  [F
  8:        68      297040  [Ljava.lang.String;
  9:       332       14136  [Ljava.lang.Object;
 10:        32       10240  <objArrayKlassKlass>
Run Code Online (Sandbox Code Playgroud)

aio*_*obe 0

可能需要通过JVM 工具接口 (JVM TI)或篡改对象的实现(这是一件棘手的事情)。

本文可能有用:Creating a Debugging and Profiling Agent with JVMTI