Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 210|回复: 0

[默认分类] Java常量的基本类型在字节码中的规范定义

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-4-19 10:51:24 | 显示全部楼层 |阅读模式

    以下内容来自《java特种兵》
      
       
       
        类型字符
        对应类型
        说明
       
       
      
       
        B
        byte
        代表字节,但不是Byte的意思
       
       
        Z
        boolean
        代表布尔值,同样不是Boolean值
       
       
        S
        short
         
       
       
        C
        char
         
       
       
        I
        int
         
       
       
        J
        long
         
       
       
        F
        float
         
       
       
        D
        double
         
       
       
        V
        void
        没有返回值
       
       
        LClassName;
        Reference
        引用类,例如String被标识为:Ljava/lang.String;
       
       
        [
        Array Reference
        数组的引用,例如double[][]被标识为:[[D;String[]被标识为:[Ljava.lang.String;
       
      
      
    以上是在字节码中的规范定义。
    之前用jmap命令查看java应用中的对象内容的时候,输出的一堆东西看不懂,但是对照着上面的规范之后就很清晰明了了,
    1.用
    1. jps -l
    复制代码
    java应用
    1. [code][app@localhost ~]$ jps -l
    2. 17439 sun.tools.jps.Jps
    3. 31456 com.test.bootstrap.Main
    4. [app@localhost ~]$
    复制代码
    [/code]
    2.输入命令
    1. jmap -histo:live 31456|more
    复制代码

    1. [code][app@localhost ~]$ jmap -histo:live 31456|more
    2. num     #instances #bytes class name
    3. ----------------------------------------------
    4.    1:        206707       14594424  [C
    5.    2:         69903        9904328  <constMethodKlass>
    6.    3:         69903        8959328  <methodKlass>
    7.    4:          6543        7538872  <constantPoolKlass>
    8.    5:        206312        4951488  java.lang.String
    9.    6:          6543        4829504  <instanceKlassKlass>
    10.    7:          5680        4465248  <constantPoolCacheKlass>
    11.    8:         17715        2113904  [B
    12.    9:         54203        1734496  java.lang.ref.WeakReference
    13.   10:          2882        1486608  <methodDataKlass>
    14.   11:         39774        1272768  java.util.concurrent.ConcurrentHashMap$HashEntry
    15.   12:         30530        1221200  java.util.LinkedHashMap$Entry
    16.   13:         22637         905480  java.lang.ref.SoftReference
    17.   14:         14081         788536  java.beans.MethodDescriptor
    18.   15:         21827         754632  [Ljava.lang.Object;
    19.   16:          7799         684168  [Ljava.util.HashMap$Entry;
    20.   17:          6978         682856  java.lang.Class
    21.   18:         12115         678440  java.util.LinkedHashMap
    22.   19:         28127         675048  java.beans.MethodRef
    23.   20:          8424         673920  java.lang.reflect.Method
    24.   21:          8810         577704  [S
    25.   22:          7702         561816  [I
    26.   23:         10000         530096  [[I
    复制代码
    [/code]
    像以上内容的
    1. [C
    复制代码
    1. [[I
    复制代码
    等等就能知道具体的含义了,char数组引用和int[][]引用。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 03:30 , Processed in 0.375225 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表