Home > Store

larger cover

Add To My Wish List

Java Performance

Register your product to gain access to bonus material or receive a coupon.

  • Description
  • Sample Content

Product Author Bios

Charlie Hunt is a Java Performance 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 GlassFish Application Server. He is a regular speaker at the JavaOne Conference on the subject of Java performance. He also actively participates in several popular open source communities including; Project Grizzly as a co-project owner and contributor, and NetBeans, where he is an evangelist for NetBeans technology and a co-author of the widely selling NetBeans IDE Field Guide. He wrote his first Java

program in 1999 and has been improving the performance of Java and Java applications ever since. He holds a Master of Science degree in Computer Science from the Illinois Institute of Technology and a Bachelor of Science in Computer Science from Iowa State University. In his spare time, he works on improving the performance of high horsepower racing engines.

 

 Binu John is a Senior Performance Engineer at Ning, Inc, the leading social network platform for people's interests and passions. In his current role, he is focused on improving the performance and scalability of the Ning platform to support millions of page views per month. Before joining Ning, Binu spent more than an decade working on Java related performance work at Sun Microsystems. As a member of Sun's Enterprise Java Performance team, he worked on several open source projects including the GlassFish application server, the Open Source Enterprise Service Bus (Open ESB), and Open MQ JMS product. He has been an active contributor in the development of the various industry standard benchmarks such as SPECjms2007 and SPECJAppServer2008, has published several performance whitepapers and has previously contributed to the XMLTest and WSTest benchmark projects at java.net. Binu holds master of science degrees in Biomedical Engineering and Computer Science from The University of Iowa. In his spare time, Binu enjoys reading, hiking and playing hockey.

“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

 
Buy

eBook (Watermarked)  $47.99  $38.39

Includes EPUB, MOBI, and PDF
About eBook Formats

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.

Also available in other formats.

Purchase Reward: One Month Free Subscription
By completing any purchase on InformIT, you become eligible for an unlimited access one-month subscription to Safari Books Online.

Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.