
Java Performance
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Coding and testing are generally considered separate areas of expertise. In this practical book, Java expert Scott Oaks takes the approach that anyone who works with Java should be adept at understanding how code behaves in the Java Virtual Machine?including the tunings likely to help performance. This updated second edition helps you gain in-depth knowledge of Java application performance using both the JVM and the Java platform.
Developers and performance engineers alike will learn a variety of features, tools, and processes for improving the way the Java 8 and 11 LTS releases perform. While the emphasis is on production-supported releases and features, this book also features previews of exciting new technologies such as ahead-of-time compilation and experimental garbage collections.
- Understand how various Java platforms and compilers affect performance
- Learn how Java garbage collection works
- Apply four principles to obtain best results from performance testing
- Use the JDK and other tools to learn how a Java application is performing
- Minimize the garbage collector's impact through tuning and programming practices
- Tackle performance issues in Java APIs
- Improve Java-driven database application performance
More details
Other editions
Additional editions

Content
- Intro
- Copyright
- Table of Contents
- Preface
- Who Should (and Shouldn't) Read This Book
- What's New in the Second Edition
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Online Learning
- How to Contact Us
- Acknowledgments
- Chapter 1. Introduction
- A Brief Outline
- Platforms and Conventions
- Java Platforms
- Hardware Platforms
- The Complete Performance Story
- Write Better Algorithms
- Write Less Code
- Oh, Go Ahead, Prematurely Optimize
- Look Elsewhere: The Database Is Always the Bottleneck
- Optimize for the Common Case
- Summary
- Chapter 2. An Approach to Performance Testing
- Test a Real Application
- Microbenchmarks
- Macrobenchmarks
- Mesobenchmarks
- Understand Throughput, Batching, and Response Time
- Elapsed Time (Batch) Measurements
- Throughput Measurements
- Response-Time Tests
- Understand Variability
- Test Early, Test Often
- Benchmark Examples
- Java Microbenchmark Harness
- Common Code Examples
- Summary
- Chapter 3. A Java Performance Toolbox
- Operating System Tools and Analysis
- CPU Usage
- The CPU Run Queue
- Disk Usage
- Network Usage
- Java Monitoring Tools
- Basic VM Information
- Thread Information
- Class Information
- Live GC Analysis
- Heap Dump Postprocessing
- Profiling Tools
- Sampling Profilers
- Instrumented Profilers
- Blocking Methods and Thread Timelines
- Native Profilers
- Java Flight Recorder
- Java Mission Control
- JFR Overview
- Enabling JFR
- Selecting JFR Events
- Summary
- Chapter 4. Working with the JIT Compiler
- Just-in-Time Compilers: An Overview
- HotSpot Compilation
- Tiered Compilation
- Common Compiler Flags
- Tuning the Code Cache
- Inspecting the Compilation Process
- Tiered Compilation Levels
- Deoptimization
- Advanced Compiler Flags
- Compilation Thresholds
- Compilation Threads
- Inlining
- Escape Analysis
- CPU-Specific Code
- Tiered Compilation Trade-offs
- The GraalVM
- Precompilation
- Ahead-of-Time Compilation
- GraalVM Native Compilation
- Summary
- Chapter 5. An Introduction to Garbage Collection
- Garbage Collection Overview
- Generational Garbage Collectors
- GC Algorithms
- Choosing a GC Algorithm
- Basic GC Tuning
- Sizing the Heap
- Sizing the Generations
- Sizing Metaspace
- Controlling Parallelism
- GC Tools
- Enabling GC Logging in JDK 8
- Enabling GC Logging in JDK 11
- Summary
- Chapter 6. Garbage Collection Algorithms
- Understanding the Throughput Collector
- Adaptive and Static Heap Size Tuning
- Understanding the G1 Garbage Collector
- Tuning G1 GC
- Understanding the CMS Collector
- Tuning to Solve Concurrent Mode Failures
- Advanced Tunings
- Tenuring and Survivor Spaces
- Allocating Large Objects
- AggressiveHeap
- Full Control Over Heap Size
- Experimental GC Algorithms
- Concurrent Compaction: ZGC and Shenandoah
- No Collection: Epsilon GC
- Summary
- Chapter 7. Heap Memory Best Practices
- Heap Analysis
- Heap Histograms
- Heap Dumps
- Out-of-Memory Errors
- Using Less Memory
- Reducing Object Size
- Using Lazy Initialization
- Using Immutable and Canonical Objects
- Object Life-Cycle Management
- Object Reuse
- Soft, Weak, and Other References
- Compressed Oops
- Summary
- Chapter 8. Native Memory Best Practices
- Footprint
- Measuring Footprint
- Minimizing Footprint
- Native Memory Tracking
- Shared Library Native Memory
- JVM Tunings for the Operating System
- Large Pages
- Summary
- Chapter 9. Threading and Synchronization Performance
- Threading and Hardware
- Thread Pools and ThreadPoolExecutors
- Setting the Maximum Number of Threads
- Setting the Minimum Number of Threads
- Thread Pool Task Sizes
- Sizing a ThreadPoolExecutor
- The ForkJoinPool
- Work Stealing
- Automatic Parallelization
- Thread Synchronization
- Costs of Synchronization
- Avoiding Synchronization
- False Sharing
- JVM Thread Tunings
- Tuning Thread Stack Sizes
- Biased Locking
- Thread Priorities
- Monitoring Threads and Locks
- Thread Visibility
- Blocked Thread Visibility
- Summary
- Chapter 10. Java Servers
- Java NIO Overview
- Server Containers
- Tuning Server Thread Pools
- Async Rest Servers
- Asynchronous Outbound Calls
- Asynchronous HTTP
- JSON Processing
- An Overview of Parsing and Marshaling
- JSON Objects
- JSON Parsing
- Summary
- Chapter 11. Database Performance Best Practices
- Sample Database
- JDBC
- JDBC Drivers
- JDBC Connection Pools
- Prepared Statements and Statement Pooling
- Transactions
- Result Set Processing
- JPA
- Optimizing JPA Writes
- Optimizing JPA Reads
- JPA Caching
- Spring Data
- Summary
- Chapter 12. Java SE API Tips
- Strings
- Compact Strings
- Duplicate Strings and String Interning
- String Concatenation
- Buffered I/O
- Classloading
- Class Data Sharing
- Random Numbers
- Java Native Interface
- Exceptions
- Logging
- Java Collections API
- Synchronized Versus Unsynchronized
- Collection Sizing
- Collections and Memory Efficiency
- Lambdas and Anonymous Classes
- Stream and Filter Performance
- Lazy Traversal
- Object Serialization
- Transient Fields
- Overriding Default Serialization
- Compressing Serialized Data
- Keeping Track of Duplicate Objects
- Summary
- Appendix A. Summary of Tuning Flags
- Index
- About the Author
- Colophon
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.