0、开篇词:为什么我们要学习Java虚拟机前不久我参加了一个国外程序员的讲座,讲座的副标题很有趣,叫做:“我如何学会停止恐惧,并且爱上Java虚拟机”。 这句话来自一部黑色幽默电影《奇爱博士》,电影描述了冷战时期剑拔弩张的氛围。 程序员之间的语言之争又未尝不是如此。写系统语言的鄙视托管语言低...2026-03-01深入拆解Java虚拟机
1、Java代码是怎么运行的我们学院的一位教授之前去美国开会,入境的时候海关官员就问他:既然你会计算机,那你说说你用的都是什么语言吧? 教授随口就答了个Java。海关一看是懂行的,也就放行了,边敲章还边说他们上学那会学的是C+。我还特意去查了下,真有叫C+的语言,但是这里海关官...2026-03-01深入拆解Java虚拟机
2、Java的基本类型如果你了解面向对象语言的发展史,那你可能听说过Smalltalk这门语言。它的影响力之大,以至于之后诞生的面向对象语言,或多或少都借鉴了它的设计和实现。 在Smalltalk中,所有的值都是对象。因此,许多人认为它是一门纯粹的面向对象语言。 Java...2026-03-01深入拆解Java虚拟机
3、Java虚拟机是如何加载Java类的听我的意大利同事说,他们那边有个习俗,就是父亲要帮儿子盖栋房子。 这事要放在以前还挺简单,亲朋好友搭把手,盖个小砖房就可以住人了。现在呢,整个过程要耗费好久的时间。首先你要请建筑师出个方案,然后去市政部门报备、验证,通过后才可以开始盖房子。盖好房子还...2026-03-01深入拆解Java虚拟机
4、JVM是如何执行方法调用的(上)前不久在写代码的时候,我不小心踩到一个可变长参数的坑。你或许已经猜到了,它正是可变长参数方法的重载造成的。(注:官方文档建议避免重载可变长参数方法,见[1]的最后一段。) 我把踩坑的过程放在了文稿里,你可以点击查看。 12345678void inv...2026-03-01深入拆解Java虚拟机
5、JVM是如何执行方法调用的(下)我在读博士的时候,最怕的事情就是被问有没有新的Idea。有一次我被老板问急了,就随口说了一个。 这个Idea究竟是什么呢,我们知道,设计模式大量使用了虚方法来实现多态。但是虚方法的性能效率并不高,所以我就说,是否能够在此基础上写篇文章,评估每一种设计...2026-03-01深入拆解Java虚拟机