Java Performance by Charlie HuntJava Performance by Charlie Hunt

Java Performance

byCharlie Hunt, Binu John

Paperback | October 4, 2011

Pricing and Purchase Info

$44.67 online 
$62.99 list price save 29%
Earn 223 plum® points

Prices and offers may vary in store


In stock online

Ships free on orders over $25

Not available in stores


“The definitive master class in performance tuning Java applications…if you love all the gory details, this is the book for you.”

–James Gosling, creator of the Java Programming Language


Improvements in the Java platform and new multicore/multiprocessor hardware have made it possible to dramatically improve the performance and scalability of Java software.

Java Performance covers the latest Oracle and third-party tools for monitoring and measuring performance on a wide variety of hardware architectures and operating systems. The authors present dozens of tips and tricks you’ll find nowhere else.

You’ll learn how to construct experiments that identify opportunities for optimization, interpret the results, and take effective action. You’ll also find powerful insights into microbenchmarking–including how to avoid common mistakes that can mislead you into writing poorly performing software. Then, building on this foundation, you’ll walk through optimizing the Java HotSpot VM, standard and multitiered applications; Web applications, and more. Coverage includes

  • Taking a proactive approach to meeting application performance and scalability goals
  • Monitoring Java performance at the OS level in Windows, Linux, and Oracle Solaris environments
  • Using modern Java Virtual Machine (JVM) and OS observability tools to profile running systems, with almost no performance penalty
  • Gaining “under the hood” knowledge of the Java HotSpot VM that can help you address most Java performance issues
  • Integrating JVM-level and application monitoring
  • Mastering Java method and heap (memory) profiling
  • Tuning the Java HotSpot VM for startup, memory footprint, response time, and latency
  • Determining when Java applications require rework to meet performance goals
  • Systematically profiling and tuning performance in both Java SE and Java EE applications
  • Optimizing the performance of the Java HotSpot VM

Using this book, you can squeeze maximum performance and value from all your Java applications–no matter how complex they are, what platforms they’re running on, or how long you’ve been running them.

Charlie Hunt is the JVM performance lead engineer at Oracle. He is responsible for improving the performance of the HotSpot JVM and Java SE class libraries. He has also been involved in improving the performance of the Oracle GlassFish and Oracle WebLogic Server. A regular JavaOne speaker on Java performance, he also coauthored NetBea...
Title:Java PerformanceFormat:PaperbackProduct dimensions:720 pages, 9.12 × 7 × 0.88 inShipping dimensions:9.12 × 7 × 0.88 inPublished:October 4, 2011Publisher:Pearson EducationLanguage:English

The following ISBNs are associated with this title:

ISBN - 10:0137142528

ISBN - 13:9780137142521


Table of Contents

Foreword by James Gosling         xi

Foreword by Steve Wilson         xiii

Preface         xv

Acknowledgments         xix

About the Authors         xxi


Chapter 1:  Strategies, Approaches, and Methodologies   1

Forces at Play   2

Two Approaches, Top Down and Bottom Up   5

Choosing the Right Platform and Evaluating a System   8

Bibliography   11


Chapter 2: Operating System Performance Monitoring         13

Definitions   14

CPU Utilization   14

CPU Scheduler Run Queue   28

Memory Utilization   32

Network I/O Utilization   41

Disk I/O Utilization   46

Additional Command Line Tools   49

Monitoring CPU Utilization on SPARC T-Series Systems   50

Bibliography   53


Chapter 3: JVM Overview   55

HotSpot VM High Level Architecture   56

HotSpot VM Runtime   58

HotSpot VM Garbage Collectors   80

HotSpot VM JIT Compilers   92

HotSpot VM Adaptive Tuning   100

References   106


Chapter 4: JVM Performance Monitoring         107

Definitions   108

Garbage Collection   108

JIT Compiler   146

Class Loading   147

Java Application Monitoring   150

Bibliography   153


Chapter 5: Java Application Profiling         155

Terminology   157

Oracle Solaris Studio Performance Analyzer   159

NetBeans Profiler   189

References   209


Chapter 6: Java Application Profiling Tips and Tricks         211

Performance Opportunities   211

System or Kernel CPU Usage   212

Lock Contention   222

Volatile Usage   234

Data Structure Resizing   235

Increasing Parallelism   243

High CPU Utilization   246

Other Useful Analyzer Tips   247

Bibliography   249


Chapter 7: Tuning the JVM, Step by Step          251

Methodology   252

Application Systemic Requirements   255

Rank Systemic Requirements   257

Choose JVM Deployment Model   58

Choose JVM Runtime   259

GC Tuning Fundamentals   262

Determine Memory Footprint   268

Tune Latency/Responsiveness   278

Tune Application Throughput   307

Edge Cases   316

Additional Performance Command Line Options   316

Bibliography   321


Chapter 8: Benchmarking Java Applications         323

Challenges with Benchmarks   324

Design of Experiments   347

Use of Statistical Methods   348

Reference   355

Bibliography   355


Chapter 9: Benchmarking Multitiered Applications         357

Benchmarking Challenges   357

Enterprise Benchmark Considerations   360

Application Server Monitoring   382

Profiling Enterprise Applications   399

Bibliography   401


Chapter 10: Web Application Performance         403

Benchmarking Web Applications   404

Web Container Components   405

Web Container Monitoring and Performance Tunings   408

Best Practices   427

Bibliography   450


Chapter 11: Web Services Performance         453

XML Performance   454

Validation   460

Resolving External Entities   462

Partial Processing of XML Documents   465

Selecting the Right API   468

JAX-WS Reference Implementation Stack   471

Web Services Benchmarking   473

Factors That Affect Web Service Performance   477

Performance Best Practices   486

Bibliography   503


Chapter 12: Java Persistence and Enterprise Java Beans Performance         505

EJB Programming Model   506

The Java Persistence API and Its Reference Implementation   507

Monitoring and Tuning the EJB Container   511

Transaction Isolation Level   521

Best Practices in Enterprise Java Beans   522

Best Practices in Java Persistence   540

Bibliography   551


Appendix A: HotSpot VM Command Line Options of Interest         553


Appendix B: Profiling Tips and Tricks Example Source Code         573

Lock Contention First Implementation   573

Lock Contention Second Implementation   583

Lock Contention Third Implementation   593

Lock Contention Fourth Implementation   603

Lock Contention Fifth Implementation   613

First Resizing Variant   624

Second Resizing Variant   636

Increasing Parallelism Single-Threaded Implementation   647

Increasing Parallelism Multithreaded Implementation   657


Index         669