最近在跟着耗子哥的程序员练级指南学习Java底层知识,结合《深入理解Java虚拟机》这本书在看,写笔记,看资料,成长中……
目前看完了第二章JMM和各内存区OOM的情况
一篇图文并茂介绍字节码的文章:
https://mahmoudanouti.wordpress.com/2018/03/20/introduction-to-java-bytecode/
18-07-31更新:
现在已经看完了前五章,从第六章开始,六七八章开始涉及Class的文件构成是什么?类加载的五个步骤“加载、验证、准备、解析、初始化”分别是什么?
看完了常量池这一部分,是Class文件的资源仓库,记录与其他项目关联的数据结构。
使用 javap -verbose 命令可以解析字节码文件。
8/1更新:
看书的速度明显慢下来了,显然开始要读干货了。
今天看了字段表集合这一小节,带着前面对常量池一节的理解,读下来并不难。
字段表,就是类变量以及实例变量的集合。什么与变量有关?首先是访问控制符(private, public, protected), 然后是能否修改(final), 是否为类变量(static), 并发可见性(volatile, 线程是否直接从主内存读), 是否可序列化(transient), 字段数据类型,字段名称。
除了类型和名称,其他的都可以用boolean来表示。类型和名称则是引用常量表里的数据项。
8/6更新:
发现一篇总结比较好的JVM面试题: https://www.cnblogs.com/zuolun2017/p/6121782.html
8/15更新:
最近开始了一项新工作:解析class文件。
今天解析到属性表(attribute field) ,解析Code 和 Exception,并且重构了代码。