摘要: 每一个Class都对应着唯一的一个类或借口的定义信息。这里,我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼,但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成,所有的16位、32位和64位长度的数据将被构造成 2个、4个和8个8字节单位来表示。ClassFile结构 每一个Class文件对应于一个如下所示的ClassFile结构体。ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_c... 阅读全文
posted @ 2012-02-07 16:41 朱样年华 阅读(6038) 评论(0) 推荐(4) 编辑
摘要: 字符 Java用char类型来表示字母、数字、标点符号以及其他特殊字符。Java基于Unicode4.0来表示每一个字符,Unicode的设计目标是容纳世界上所有主要语言中的字符。 Java使用16位即2个字节来表示字符,这意味着Java可以表示216,即65536个字符,看起来很多,但是还不能支持整个Unicode标准中的所有字符。如果超过这个范围,Java允许使用int类型来表示字符,int类型字长4个字节32位,可以表示232位的字符。 Java中表示字符的最简单的方式如下,使用单引号嵌入字符:char capitalA = 'A'; 字符从本质上讲是数字。每一个字符映射 阅读全文
posted @ 2012-02-06 10:53 朱样年华 阅读(29614) 评论(1) 推荐(2) 编辑
摘要: Java虚拟机通过系列类加载器加载Class文件,然后读取其中的字节码指令进行工作的。而Class文件则是通过Java编译器编译Java源代码得到的,如下图: 理解编译器是如何与Java虚拟机协同工作的,对编译器开发人员来说很有好处,同样也有助于理解Java虚拟机本身。 下面主要介绍的是Java虚拟机规定的编译规则:常量、局部变量的使用和控制结构 Java虚拟机是基于栈架构设计的,它的大多数操作是从当前栈帧的操作数栈取出1个或多个操作数,或将结果压入操作数栈中。每调用一个方法,都会创建一个新的栈帧,并创建对应方法所需的操作数栈和局部变量表 前面已经谈到栈和栈帧的概念,在栈... 阅读全文
posted @ 2012-02-03 17:21 朱样年华 阅读(1544) 评论(0) 推荐(2) 编辑
摘要: 前言 说到学习jvm,其实我本人并不认为学习完以后会对目前工作有什么太大的帮助。但是为了深入了解java体系,使自己在看待问题上能够看到更本质的部分还是必须要学习的。同时对于自己的技术也是一个深入。 闲话少说,这个系列主要是阅读Java虚拟机规范的一些知识点的梳理和心得,后续可能还包括经典的《深入Java虚拟机》一书的系列。 首先提供一下《Java虚拟机规范(Java SE 7)》PDF中文版的下载,这个版本要感谢ITEYE上的几位牛人进行的翻译,不然只能去啃英文版的了。 下载: 《Java虚拟机规范(JavaSE7)》 引用下书里的概括: Java SE 7版的《Java虚拟机... 阅读全文
posted @ 2012-01-31 17:25 朱样年华 阅读(6131) 评论(4) 推荐(3) 编辑
摘要: 新的一年里,觉得有必要在学习和生活上变的有规划一点。 从小到大一直不屑于用笔记录什么:上课不记笔记,开会也不记要点,看到某些技术点也从来都自信的用头脑记下。。。 但是现在发觉:好记性真的不如烂笔头。但是最重要的原因还是因为技术是需要积累的,很多东西需要记下来慢慢的去品味。 我想告别杂乱无章的学习态度和浮躁的学习方式,会的不少,精的不多。 既然做技术了,那么还是得静下心的去积累、沉淀、梳理知识体系。 博客只是我选择的方式,同时也是考验下自己的毅力、耐心和语言组织能力。 很多东西需要去学习,记录下来,量变而质变。 那么,让我们开始吧! 阅读全文
posted @ 2012-01-31 10:09 朱样年华 阅读(354) 评论(2) 推荐(1) 编辑