文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发JavaJava基础:你是否了解KVM的常量池
精品推荐
特别推荐
·实例讲解:Java中的SOAP技术
·Java语言出现的背景 影响及前景
·Java精华积累:初学者都应该搞懂的问题
·Java多媒体框架设计自动播放机实例详解
·如何有效防止Java程序源码被人偷窥?
·Cell插件在J2EE系统中的应用
·初学者想学Hibernate,初级基础教程
·Java语言实现支持视频点播的WEB服务器
·关于Java编程的中文问题的几条分析原则
·确保J2ME无线移动商业应用程序的安全性
热点TOP10
·SCJP认证套题解析(1)
·好东西介绍,直接用 java 命令行动态生成jpg文件
·JavaClassLoader与Package机制
·反射在Java Swing编程中的应用
·基于Java的界面布局DSL的设计与实现
·垃圾清理势在必行——Java垃圾收集算法
·Java应用技巧:对于 Cookie 的操作详解
·Java编译器对于String常量表达式的优化
·基于Java的界面布局 DSL 的设计与实现
·JAVA和.NET两个平台对于安全功能的比较

Java基础:你是否了解KVM的常量池

日期:2007年12月14日 作者: 查看:[大字体 中字体 小字体]


在class文件中,“常量池”是最复杂也最值得关注的内容。

Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如:

类和接口的全限定名;

字段的名称和描述符;

方法和名称和描述符。

在C语言中,如果一个程序要调用其它库中的函数,在连接时,该函数在库中的位置(即相对于库文件开头的偏移量)会被写在程序中,在运行时,直接去这个地址调用函数;

而在Java语言中不是这样,一切都是动态的。编译时,如果发现对其它类方法的调用或者对其它类字段的引用的话,记录进class文件中的,只能是一个文本形式的符号引用,在连接过程中,虚拟机根据这个文本信息去查找对应的方法或字段。

所以,与Java语言中的所谓“常量”不同,class文件中的“常量”内容很非富,这些常量集中在class中的一个区域存放,一个紧接着一个,这里就称为“常量池”。

常量池由多条“常量池项”组成,每一个常量池项又由两部分组成,这里分别称为“常量池项头”和“常量池项体”。

常量池项头表明常量池项的类型,常量池项共分为11种类型,分别为:

常量池项类型
 值
 说明
 
CONSTANT_Utf8
 1
 UTF-8编码的Unicode字符串
 
CONSTANT_Integer
 3
 int型常量
 
CONSTANT_Float
 4
 Float型常量
 
CONSTANT_Long
 5
 Long型常量
 
CONSTANT_Double
 6
 double型常量
 
CONSTANT_Class
 7
 对一个class的符号引用
 
CONSTANT_String
 8
 String型常量
 
CONSTANT_Fieldref
 9
 对一个字段的符号引用
 
CONSTANT_Methodref
 10
 对一个类方法的符号引用
 
CONSTANT_InterfaceMedthodref
 11
 对一个接口方法的符号引用
 
CONSTANT_NameAndType
 12
 对名称和类型的符号引用

常量池项体中存放的就是对应的常量数据,比如各种数值型的常量或者字符串等等。

以下介绍kvm中的常量池是如何组织起来的。

数据结构:

在KVM的头文件kvm/vmcommon/h/pool.h中,有以下对常量池项类型的定义:

#define CONSTANT_Utf8                       1
#define CONSTANT_Integer                    3
#define CONSTANT_Float                      4
#define CONSTANT_Long                       5
#define CONSTANT_Double                     6
#define CONSTANT_Class                      7

[1] [2] [3] 下一页 




上一篇:配置无线局域网 图解WLAN配置攻略

下一篇:Static和Final修饰类属性变量及初始化

相关文章:
·全面了解ADSL/Cable共享路由器
·做QQ高手,你应该了解的17种QQ技术
·Flash AS基础精典教程
·基础知识 初级黑客安全技术命令详解
·很多人都不太了解的20个windows XP秘密
·java做的比较完善的FTP连接上传下载文件
·了解网络知识:网络“六客”各有神通
·网管必读-十项必备基础
·计算机基础知识
·基础:flash9.ocx 加载错误解决方法
相关软件:
·SQL Server 2000 基础系列课程视频
·鸟哥的linux私房菜:基础学习篇
·计算机基础知识教程
·2006年注税财务与会计基础班MP3课件第十六章(二)讲座
·3D Max基础教程
·Java就业培训讲座(上)
·超频基础知识
·2006年考研数学基础班·高等数学 汪诚义 25.25
·2006年考研数学基础班·高等数学 汪诚义 15
·2006年考研数学基础班·高等数学 汪诚义 10

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot