关于常量池的理解
9344187
2013-12-28
请问字节码文件(.class)中的常量池(Constant pool),和运行时常量池(Runtime Constant pool)是什么关系。
每个字节码文件的常量都放置在运行时常量池吗? 如果两个字节码文件都有“abc”这个常量,那么在运行时常量池是否合并成一个? jvm在执行指令的时候怎样找到运行时常量池中具体的对象呢? |
|
runshine
2013-12-28
1.字节码文件中的常量池会在类被加载后存放到运行时常量池。
2.这个不了解...应该分虚拟机而情况不同吧,现在运行时优化手段那么多,搞不好就被做掉了,我倾向于“不一定”,还是等R大来解答吧 3.参见1就知道是可以的。 4.字节码文件中的常量池中对象都是通过符号引用的,这些引用会在类加载阶段或运行时转化为直接引用。 |
|
simpleman7210
2013-12-31
楼主若研究下class文件格式,就知道常量一般是放在常量池中的。至于常量是否合并,我认为有可能,但不合并肯定也是可以的,特别对于简单的虚拟机。若想弄清楚符号引用怎么转为直接引用,我觉得最好去研究一个现成的虚拟机实现,阅读源代码,调试和跟踪。如果你有兴趣,可以看看我用C++写的一个简单虚拟机,放在我的博客上,可以运行简单的Java程序。
|
|
RednaxelaFX
2014-01-02
楼主先看看之前一帖,然后细化问题我再看要不要码新的字…
http://hllvm.group.iteye.com/group/topic/26412#post-187861 |
|
9344187
2014-01-09
谢谢各位大大的回答。原来各个JVM的运行时常量池的组织方式是不一样的!
特别是R大的帖子,完全切中要害啊!了解了HotSpot VM的组织方式。 simpleman7210大的虚拟机一定拜读! |
相关讨论
相关资源推荐
- SQL之CASE WHEN用法详解
- 字节面试官:一条sql执行慢的原因?如何优化?
- 利用SQL求中位数(已修复BUG)
- pdo mysql 执行多条sql_PDO中执行SQL语句的三种方法
- ado.net/dapper 的多sql语句执行的疑惑
- mysql 每个分类取几条_MySQL 获取所有归类和每个分类的前几条记录
- Spring Boot入门(14):使用Mybatis-Plus轻松实现高效自定义SQL操作!
- sql性能优化:sql Server 怎么添加全文索引+语法深度剖析+测试
- 【SQL】一文详解嵌入式SQL(建议收藏)
- mysql使用多个索引_mysql索引合并:一条sql可以使用多个索引