Java虚拟机精讲

高翔龙
前言 大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。这其中最主要的原因或许是在实际的开发过程中,开发人员根本没有机会或是没有必要与Java虚拟机等底层技术打交道,更多的只是简简单单地将Java虚拟机作为载体,让程序能够顺利运行其上即可。 笔者在面试的过程中,经常会对面试者询问一些与Java虚拟机相关的技术问题,但大部分开发人员对于笔者所提及的问题,几乎都有一个统一的答案,那就是不知道、不清楚。有些刚从校门出来的应届毕业生,甚至还包括一些有一定工作经验的开发人员,打心眼儿里觉得Struts、Spring和Hibernate等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。这就好比金庸武侠小说《笑傲江湖》里的令狐冲,尽管独孤九剑看上去很酷炫,但由于本身内功修炼得不够,与敌人对抗时又能撑得了几个回合呢? 对于那些成熟的第三方开源产品,笔者始终只是把它们当作一种工具,用的时候是宝,不用的时候就丢弃,尽管有些残忍,但确实就是这么现实。以互联网项目为例,对于高性能和稳定性的要求往往大于企业级项目的规范化和流程化,因此架构师每天都会不停地思考,应该如何让我的系统更快?如何避免系统出现瓶颈?如果换作你来做架构师并负责解决这些问题,假如你对Java虚拟机一无所知,那么可想而知,你又有什么能力做到系统的性能调优?毕竟性能调优不仅仅只是单纯地从应用代码结构上进行调整,也不是纯粹地依靠物理堆机就能够解决的。 创作此书的目的 尽管并不是所有开发人员都能够在实际的项目开发过程中用到与Java虚拟机相关的优化技术,但这并不能够成为你不去了解Java虚拟机的理由。只要你从事的是与Java开发相关的岗位,那么对Java虚拟机实现机制的了解就是你迟早必须攀爬的一座高山。如果你害怕,那么你将永远也无法屹立在山顶遥…