微信好友里好多想睡的人。。。

常量池的表现方式
一.class文件中常量池的表现方式
下面有这样一个类

public class Act {public long m1() {int a=4;long b=444;return a+b;}
}

将Act类编译成Act.class文件,使用16进制查看器打开

依次类推,不同的常量池标志,用不同的数字表示,下表列出了Class文件中常量池所有的标志

类型(tag)
UTF8 1
Integer 3
Float 4
Long 5
Double 6
Class 7
String 8
Fieldref 9
Methodref 10
InterfaceMethodref 11
NameAndType 12

这个表虽然列出了常量池信息,但是我个人觉得它不重要,我主要想表达的是:在Class文件中,常量池是连续的

二:内存中常量池的表现方式
JVM读取class文件的常量池信息,会根据这些信息,最终组织到内存中,那么在内存中,常量池是什么样子的呢?JVM规范并没有规定内存中常量池是什么样子,不过下面这个样子是最合理的

所以常量池在内存中的表现,有点像旧时的HashMap,左侧红色虚线是一个数组,数组中每个元素大小是jvm中的一个字(4字节),注意long和double会占用两个元素,如果一个元素的内容不是字面值,而是引用值的话,那么右侧黄色虚线中,是具体每个元素的内容

Java-虚拟机-常量池的表现方式相关推荐

  1. Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池

    从此文可以大体了解, https://blog.csdn.net/bcbobo21cn/article/details/109108970 自己的程序中定义的数值,像 int a=999; ,这样的, ...

  2. 第四篇:由浅入深,虚拟机常量池底层解析

    文章目录 一.前言 二.常量池的引入:从常量到常量池 2.1 常量 2.2 Class文件中的常量池 2.3 方法区中的运行时常量池 2.4 常量池的好处 三.常量池的介绍:JVM三种常量池 3.1 ...

  3. java 更改 常量池_JVM中三个常量池(两种常量池)的解析及其随jdk版本的变化

    目录 常量池 静态常量池 运行时常量池 字符串常量池 三个常量池的关系 其随jdk版本的变化 常量池 请注意常量池是线程共享数据区,常量池的内容: 常量池的好处: 常量池是为了避免频繁的创建和销毁对象 ...

  4. 理解Java字符串常量池与intern()方法

    理解Java字符串常量池与intern()方法 阅读目录 Java内存区域 两种创建方式在内存中的区别 解释开头的例子 intern()方法 参考资料 String s1 = "Hello& ...

  5. Java String 常量池理解

    Java String 常量池理解 String:字符串常量池 作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以 ...

  6. java integer常量池_为什么Integer常量池的行为在127发生变化?

    不,数字常量池的工作方式不同于字符串.对于字符串,只保留编译时常量-而对于整数类型的包装器类型,如果任何装箱操作都适用于该值,则任何装箱操作都将始终使用该池.因此,例如: int x = 10; in ...

  7. java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  8. Java字符串常量池

    前言 本文主要用于记录和分享一下博主在解决如题问题时,从各种途径所查询到的个人认为比较可信的相关资料,以及他人或个人得出的一些结论.如果参考资料或者所得结论存在错误,欢迎批评指正. 注意:本文中提及到 ...

  9. java 常量字符串过长_90%的同学都没搞清楚的 Java 字符串常量池问题(图文并茂)

    字符串问题可谓是 Java 中经久不衰的问题,尤其是字符串常量池经常作为面试题出现.可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细分析起来却又发现不太明白. 背景说明 ...

最新文章

  1. Android 笔记之 R 文件
  2. oracle中国授权机构查询,oracle授权查询
  3. javascript 常用类
  4. C语身教程第三章: C说话挨次筹算匹面(1)
  5. 使用Java的BlockingQueue实现生产者-消费者
  6. java实现多个数字求和_图形化界面
  7. 吴恩达|机器学习作业4.0神经网络反向传播(BP算法)
  8. Java基础(一)——基本语法
  9. 神经网络 测试集loss不下降_代码实践 | 全连接神经网络回归---房价预测
  10. iOS中TableView小技巧
  11. Nordic fds 文件系统源码探究
  12. 做跨境如何去降低成本?
  13. cocoa 自动键值观察(KVO)--笔录
  14. 百度脑图打开本地xmind文件的方式
  15. 痛心:三天痛别八位院士!中科院院士、著名药学家蒋华良英年早逝,终年57岁...
  16. Bigder:53/100 真香免费网站!在线练习SQL\Python\Shell像游戏通关一样刷题
  17. jQuery按钮切页样式
  18. linux端防火墙指定端口的开和关
  19. 用计算机套路别人,套路计算器隐藏版
  20. Excel中sheet名字最大长度的坑

热门文章

  1. MySQL中的事务隔离级别
  2. IDEA隐藏不需要的文件
  3. MyEclipse中流程定义文件保存时自动生成流程图
  4. oracle+纵向存储,oracle横向纵向求和代码实例
  5. wordpress如何配置两个header。php_WordPress入门|WordPress建站详细流程
  6. @Inner使用及原理
  7. Android开发笔记(八十五)手机数据库Realm
  8. Android高级开发-布局渲染流程与优化
  9. HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
  10. 微信支付 body不是UTF-8编码以及中文签名错误的问题