HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
“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
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.
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