总结:回顾
为满足不同需要而使用不同的编译器 。
解释是将字节码转换为本地机器指令的最简单方式 , 其工作方式是基于对本地机器指令表的查找 。编译器可以基于性能计数器进行性能优化 , 但是需要消耗更多的资源(如code cache , 优化线程等) 。相比于纯解释执行代码 , 客户端编译器可以将应用程序的执行性能提升一个数量级(约5到10倍) 。相比于客户端编译器 , 服务器端编译器可以将应用程序的执行性能提升30%到50% , 但会消耗更多的资源 。层次编译综合了客户端编译器和服务器端编译器的优点 , 既可以像客户端编译器那样快速启动 , 又可以像服务器端编译器那样 , 在长时间收集运行时信息的基础上 , 优化应用程序的性能 。目前 , 已经出现了很多代码优化的手段 。对编译器来说 , 一个主要的任务就是分析所有的可能性 , 权衡使用某种优化手段的利弊 , 在此基础上编译代码 , 优化应用程序的性能 。
关于作者
Eva Andearsson对JVM计数、SOA、云计算和其他企业级中间件解决方案有着10多年的从业经验 。在2001年 , 她以JRockit JVM开发者的身份加盟了创业公司Appeal Virtual Solutions(即BEA公司的前身) 。在垃圾回收领域的研究和算法方面 , EVA获得了两项专利 。此外她还是提出了确定性垃圾回收(Deterministic Garbage Collection) , 后来形成了JRockit实时系统(JRockit Real Time) 。在技术上 , Eva与SUn公司和Intel公司合作密切 , 涉及到很多将JRockit产品线、WebLogic和Coherence整合的项目 。2009年 , Eva加盟了Azul System公 , 担任产品经理 。负责新的Zing Java平台的开发工作 。最近 , 她改换门庭 , 以高级产品经理的身份加盟Cloudera公司 , 负责管理Cloudera公司Hadoop分布式系统 , 致力于高扩展性、分布式数据处理框架的开发 。
相关资源
“JVM性能优化 , Part 1 ——JVM简介”(原文作者Eva Andreasson, 于2012年8约发表于JavaWorld)是该系列的第一篇 , 对经典JVM的工作原理做了简单介绍 , 包括Java“一次编写 , 到处运行”的优势 , 垃圾回收基础和一些常用的垃圾回收算法 。更多有关HotSpot优化原理以及JVM热身的内容请参见Vladimir Roubtsov与2003年4约发表于JavaWorld.com的文章“Watch your HotSpot compiler go”如果你想对JVM和字节码有更深入的了解 , 请参见Bill Venners在1996年发表于JavaWorld的文章“Bytecode basics” 。文章对JVM中的字节码指令集做了介绍 , 内容包括原生类型操作、类型转换以及栈上操作等 。在Java平台的官方文档中有对Java编译器javac的详细描述 。更多有关JVM中JIT编译器的内容 , 请参见IBM Research中有关Java JIT Compiler的内容 。或者参见Oracle JRockit文档中“Understanding Just-In-Time Compilation and Optimization”的相关内容.Cliff Click博士在其博客上有关于层次编译的完整教程 。更多有关使用性能计数器完成JVM性能优化的文章:“Using Platform-Specific Performance Counters for Dynamic Compilation” (作者Florian Schneider与Thomas R. Gross;由ACM Digital Lirary发表在第18届Languages and Compilers for Parallel Computing会议上)Oracle JRockit: The Definitive Guide (Marcus Hirt, Marcus Lagergren; Packt Publishing, 2010): Oracle JRockit权威指南
英文原文:javaworld , 翻译:ImportNew - 曹旭东