2.4.6监控锁竞争:Windows
与Solaris和Linux相比,Windows的内建工具难以监控Java锁竞争。Windows的性能计数器(包括Performance Monitor和typeperf)可以监控上下文切换,但无法区分让步和抢占式上下文切换。Windows上监控Java锁竞争,通常需要外部工具,例如Intel VTune或AMD CodeAnalyst。这些工具既可以监控其他性能统计数据和CPU性能计数器,也能分析Java锁。
2.4.7隔离竞争锁
在Java源代码中追查竞争锁历来都是难题。要想找到Java应用中的竞争锁,通常是定期转储线程,查找那些可能在多个线程中因共享锁而被阻塞的线程。这个过程的示例详见第4章。
Oracle Solaris Studio Performance Analyzer可以在Linux和Solaris上使用,是本书作者用过最好的隔离和报告Java锁竞争的工具之一。第5章详细介绍如何用Performance Analyzer查找Java应用中的竞争锁,示例详见第6章。
其他性能分析工具也可以找出Windows上的竞争锁。功能和Oracle Solaris Studio PerformanceAnalyzer相近的还有Intel VTune和AMD CodeAnalyst。
2.4.8监控抢占式上下文切换
前文提到了抢占式上下文切换以及它与让步式上下文切换之间的不同,不过没有详细解释。让步式上下文切换是指执行线程主动释放CPU,抢占式上下文切换是指线程因为分配的时间片用尽而被迫放弃CPU或者被其他优先级更高的线程所抢占。Solaris上mpstat的icsw列可以查看抢占式上下文切换。
展开
——James Gosling,Java之父
“《Java性能优化专业指南》是Java应用性能优化的必备参考书。它由Oracle/Sun的性能优化专家编写,系统而详细地讲解了性能优化的各个方面,从底层的操作系统及JVM的原理与监控工具,到性能测试技巧,再到上层应用框架优化。如果有Java性能优化的疑问,请先从本书开始寻找答案,无论新手老手都能从中收益。”
——莫枢,JVM开发工程师,Azul Systems
“要对Java程序做性能优化,不仅要对应用的代码实现有足够的了解,还需要对更底层的OS、JVM有较深的了解。这本书介绍了Java程序员也需要掌握的OS、JVM层面的很多知识,更吸引人的是这本书的作者结合自己的经验,为大家总结了一些性能优化的模式,例如CPU利用率高的时候需要怎么进行优化,这些模式让人受益匪浅,相信读过后能对大家日常工作中做性能优化提供不小的帮助。”
——林昊,阿里巴巴技术专家
“长期以来,一些人对Java存在一种偏见,认为Java程序存在运行性能低下的缺点。本书由浅入深地介绍了对于Java程序进行性能优化的各种工具和方法,帮助你学习Java虚拟机的基本原理、掌握一些监控Java程序性能的工具,从而快速找到程序中的性能瓶颈,并有效改善程序的运行性能。读过本书,人们将能够消除对Java程序性能的偏见,让Java真正展现出强大魅力。”
——李凡希,阿里巴巴资深研发工程师
“性能优化是一门非常实战性的技术,本书正是这样一本非常具有实战指导意义的作品。该书涵盖了Java应用、Web应用、EJB等若干不同场景下的性能分析、监控、优化的上佳实践和工具,具有相当的广度,同时该书也绝不是工具和数据的堆砌,书中对很多底层细节有着深入和细致的介绍和分析,比如GC、JIT等JVM的基本原理,都体现了作者的技术深度。通读本书能让你更好地理解Java,并洞察和解决潜在的性能问题。”
——邹飞,Google资深软件工程师、技术经理