?
从事java开发有几年的时间了,以前对jvm了解不够深入。项目中遇到一些问题,深刻体会到不是代码层级可以解决的。很多问题难以解决之处在于你发现不了问题源头。例如服务器的tps上不去,瓶颈在哪里?程序内存溢出,什么原因造成的?如何监控程序运行的状况?为此,特意抽出时间,系统学习了jvm的相关原理,希望更深刻得了解java运行的机制。总之,学习jvm,能让你站更高处看问题。
主要看了几本书
1.《深入java虚拟机》是jvm领域的经典图书,已经绝版了,里面的内容很详细,深入到每条指令的执行过程
2.《深入理解java虚拟机》国内最近出版的一本书。写得非常好,将jvm的各个方向都叙述很详细,虽然某些方面是参考了第一本书。作者还在书里分享了自己多年jvm调优的经验,非常值得学习,在此强烈推荐
3.《Java虚拟机规范》是官方的规范文档,结合上面的书籍来看非常有用
4.《编译原理》第二版,传说中的龙书。重新翻出当年的课本,更加深刻了
这几篇blog,写得比较仓促,基本上算是一些读书笔记了,可惜篇幅有限,少了很多例子讲解,不太适合入门,只适合对jvm有初步了解的同学借鉴。希望大家还是看我上面推荐的书,再结合我的这几篇blog总结。
等有时间了,希望能在以下一些方面跟大家一起做点探索
1.字节码方面的动态生成和修改,做一些模板,让开发者写更精简的代码
2.热部署。这方面的研究还比较肤浅,借鉴tomcat的源码
3.javac的源代码
4.jdk源码
希望大家也能推荐上述主题的相关资料 ken@iamcoding.com
谢谢!