Java Performance Tuning
Performance has been an important issue for Java developers ever since the first version hit the streets. Over the years, Java performance has improved dramatically, but tuning is essential to get the best results, especially for J2EE applications. You can never have code that runs too fast. Java...
Autor principal: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Sebastopol :
O'Reilly Media
2007.
|
Edición: | 2nd ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009627339006719 |
Tabla de Contenidos:
- Table of Contents; Preface; Contents of This Book; New in the Second Edition; Virtual Machine (VM) Versions; Conventions Used in This Book; Comments and Questions; Acknowledgments; Chapter 1. Introduction; Why Is It Slow?; The Tuning Game; System Limitations and What to Tune; A Tuning Strategy; Perceived Performance; Threading to Appear Quicker; Streaming to Appear Quicker; Caching to Appear Quicker; Starting to Tune; User Agreements; Setting Benchmarks; The Benchmark Harness; Taking Measurements; What to Measure; Don't Tune What You Don't Need to Tune; Performance Checklist
- Chapter 2. Profiling ToolsMeasurements and Timings; Garbage Collection; Using -verbosegc to Analyze Garbage Collection; Tools for Analyzing -verbosegc Output; Method Calls; Profiling Methodology; Java 2 cpu=samples Profile Output; HotSpot and 1.3 -Xprof Profile Output; JDK 1.1.x -prof and Java 2 cpu=old ProfileOutput; Java 2 -Xhprof Option; Java 2 -Xaprof option; Object-Creation Profiling; Monitoring Gross Memory Usage; Client/Server Communications; Replacing Sockets; Performance Checklist; Chapter 3. Underlying JDK Improvements; Garbage Collection; Tuning the Heap; Gross Tuning
- Problems with a Larger HeapStarting Versus Maximum Heap Size; Benchmarking Considerations; Fine-Tuning the Heap; Expanding the Heap; Minimizing Pauses; Incremental or "train" GC; Concurrent GC; Enlarge the "new" space; Disabling System.gc() Calls; Tuning RMI Garbage Collection; Extreme Heap and Intimate Shared Memory; Loading a Huge Number of Classes; Per-Thread Stack Size; Eliminate Finalizers; Sharing Memory; Replacing JDK Classes; Faster VMs; VM Speed Variations; VMs with JIT Compilers; VM Startup Time; Other VM Optimizations; Better Optimizing Compilers
- What Optimizing Compilers Cannot DoWhat Optimizing Compilers Can Do; Remove unused methods and classes; Increase statically bound calls; Cut dead code and unnecessary instructions, including checks for null; Use computationally cheaper alternatives (strength reduction); Replace runtime computations with compiled results; Remove unused fields; Remove unnecessary parts of compiled files; Reduce necessary parts of compiled files; Alter access control to speed up invocations; Inline calls; Remove dynamic type checks; Unroll loops; Code motion; Eliminate common subexpressions
- Eliminate unnecessary assignmentsRename classes, fields, and methods; Reorder or change bytecodes; Generate information to help a VM; Managing Compilers; Sun's Compiler and Runtime Optimizations; Optimizations You Get for Free; Literal constants are folded; String concatenation is sometimes folded; Constant fields are inlined; Dead code branches are eliminated; Optimizations Performed When Using the -O Option; Performance Effects From Runtime Options; Compile to Native Machine Code; Native Method Calls; Uncompressed ZIP/JAR Files; Performance Checklist; Chapter 4. Object Creation
- Object-Creation Statistics