Java类文件和字节码
Java类文件(字节码文件)由不同的组件组成:
http://en.wikipedia.org/wiki/Java_class_file
- 幻数:0xCAFEBABE
- 类文件格式的版本:类文件的次要和主要版本
- 常量池:类的常量池
- (…)
- 栏位:课程中的所有栏位
- 方法:类中的任何方法
- 属性:类的任何属性(例如,源文件的名称等)
数字#5只是指常量池中的某个位置。在该位置找到一个CONSTANT_FieldRef,其中包含对CONSTANT_NameAndType的引用以及其他属性。并且CONSTANT_NameAndType包含对CONSTANT_Utf8的引用(包含实际的字符串/名称。)
因此流程如下所示:
getfield #number -> FieldRef -> NameAndType -> Utf8 -> string
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html
因此,无需在每个
getfield指令中保存整个字符串,而是可以保存数字。这样可以提高解释器(或JIT)的性能以及类文件中的空间。
手写字节码
可以使用此工具将手写的字节码汇编到类文件中(包含许多示例):
http://jasmin.sourceforge.net/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)