Java-虚拟机-常量池的表现方式
微信好友里好多想睡的人。。。
常量池的表现方式
一.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-虚拟机-常量池的表现方式相关推荐
- Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
从此文可以大体了解, https://blog.csdn.net/bcbobo21cn/article/details/109108970 自己的程序中定义的数值,像 int a=999; ,这样的, ...
- 第四篇:由浅入深,虚拟机常量池底层解析
文章目录 一.前言 二.常量池的引入:从常量到常量池 2.1 常量 2.2 Class文件中的常量池 2.3 方法区中的运行时常量池 2.4 常量池的好处 三.常量池的介绍:JVM三种常量池 3.1 ...
- java 更改 常量池_JVM中三个常量池(两种常量池)的解析及其随jdk版本的变化
目录 常量池 静态常量池 运行时常量池 字符串常量池 三个常量池的关系 其随jdk版本的变化 常量池 请注意常量池是线程共享数据区,常量池的内容: 常量池的好处: 常量池是为了避免频繁的创建和销毁对象 ...
- 理解Java字符串常量池与intern()方法
理解Java字符串常量池与intern()方法 阅读目录 Java内存区域 两种创建方式在内存中的区别 解释开头的例子 intern()方法 参考资料 String s1 = "Hello& ...
- Java String 常量池理解
Java String 常量池理解 String:字符串常量池 作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以 ...
- java integer常量池_为什么Integer常量池的行为在127发生变化?
不,数字常量池的工作方式不同于字符串.对于字符串,只保留编译时常量-而对于整数类型的包装器类型,如果任何装箱操作都适用于该值,则任何装箱操作都将始终使用该池.因此,例如: int x = 10; in ...
- java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...
- Java字符串常量池
前言 本文主要用于记录和分享一下博主在解决如题问题时,从各种途径所查询到的个人认为比较可信的相关资料,以及他人或个人得出的一些结论.如果参考资料或者所得结论存在错误,欢迎批评指正. 注意:本文中提及到 ...
- java 常量字符串过长_90%的同学都没搞清楚的 Java 字符串常量池问题(图文并茂)
字符串问题可谓是 Java 中经久不衰的问题,尤其是字符串常量池经常作为面试题出现.可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细分析起来却又发现不太明白. 背景说明 ...
最新文章
- Android 笔记之 R 文件
- oracle中国授权机构查询,oracle授权查询
- javascript 常用类
- C语身教程第三章: C说话挨次筹算匹面(1)
- 使用Java的BlockingQueue实现生产者-消费者
- java实现多个数字求和_图形化界面
- 吴恩达|机器学习作业4.0神经网络反向传播(BP算法)
- Java基础(一)——基本语法
- 神经网络 测试集loss不下降_代码实践 | 全连接神经网络回归---房价预测
- iOS中TableView小技巧
- Nordic fds 文件系统源码探究
- 做跨境如何去降低成本?
- cocoa 自动键值观察(KVO)--笔录
- 百度脑图打开本地xmind文件的方式
- 痛心:三天痛别八位院士!中科院院士、著名药学家蒋华良英年早逝,终年57岁...
- Bigder:53/100 真香免费网站!在线练习SQL\Python\Shell像游戏通关一样刷题
- jQuery按钮切页样式
- linux端防火墙指定端口的开和关
- 用计算机套路别人,套路计算器隐藏版
- Excel中sheet名字最大长度的坑
热门文章
- MySQL中的事务隔离级别
- IDEA隐藏不需要的文件
- MyEclipse中流程定义文件保存时自动生成流程图
- oracle+纵向存储,oracle横向纵向求和代码实例
- wordpress如何配置两个header。php_WordPress入门|WordPress建站详细流程
- @Inner使用及原理
- Android开发笔记(八十五)手机数据库Realm
- Android高级开发-布局渲染流程与优化
- HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
- 微信支付 body不是UTF-8编码以及中文签名错误的问题