Product Cover Image

Java Performance

By Charlie Hunt, Binu John

Published by Addison-Wesley Professional

Published Date: Oct 4, 2011

Description

“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.

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

Purchase Info

ISBN-10: 0-13-290525-6

ISBN-13: 978-0-13-290525-1

Format: eBook (Watermarked)?

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Includes EPUB, MOBI, and PDF

$47.99 $38.39

Add to Cart