Java常量的基本类型在字节码中的规范定义

以下内容来自《Java特种兵》

类型字符对应类型说明
Bbyte代表字节,但不是Byte的意思
Zboolean代表布尔值,同样不是Boolean值
Sshort
Cchar
Iint
Jlong
Ffloat
Ddouble
Vvoid没有返回值
LClassName;Reference引用类,例如String被标识为:Ljava/lang.String;
[Array Reference数组的引用,例如double[][]被标识为:[[D;String[]被标识为:[Ljava.lang.String;

以上是在字节码中的规范定义。

之前用jmap命令查看java应用中的对象内容的时候,输出的一堆东西看不懂,但是对照着上面的规范之后就很清晰明了了,

1.用jps -l java应用

[app@localhost ~]$ jps -l
17439 sun.tools.jps.Jps
31456 com.test.bootstrap.Main
[app@localhost ~]$ 

2.输入命令jmap -histo:live 31456|more

[app@localhost ~]$ jmap -histo:live 31456|more

 num     #instances         #bytes  class name
----------------------------------------------
   1:        206707       14594424  [C
   2:         69903        9904328  <constMethodKlass>
   3:         69903        8959328  <methodKlass>
   4:          6543        7538872  <constantPoolKlass>
   5:        206312        4951488  java.lang.String
   6:          6543        4829504  <instanceKlassKlass>
   7:          5680        4465248  <constantPoolCacheKlass>
   8:         17715        2113904  [B
   9:         54203        1734496  java.lang.ref.WeakReference
  10:          2882        1486608  <methodDataKlass>
  11:         39774        1272768  java.util.concurrent.ConcurrentHashMap$HashEntry
  12:         30530        1221200  java.util.LinkedHashMap$Entry
  13:         22637         905480  java.lang.ref.SoftReference
  14:         14081         788536  java.beans.MethodDescriptor
  15:         21827         754632  [Ljava.lang.Object;
  16:          7799         684168  [Ljava.util.HashMap$Entry;
  17:          6978         682856  java.lang.Class
  18:         12115         678440  java.util.LinkedHashMap
  19:         28127         675048  java.beans.MethodRef
  20:          8424         673920  java.lang.reflect.Method
  21:          8810         577704  [S
  22:          7702         561816  [I
  23:         10000         530096  [[I

像以上内容的[C[[I 等等就能知道具体的含义了,char数组引用和int[][]引用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值