Book Image

Java 9 High Performance

By : Mayur Ramgir, Nick Samoylov
Book Image

Java 9 High Performance

By: Mayur Ramgir, Nick Samoylov

Overview of this book

Finally, a book that focuses on the practicalities rather than theory of Java application performance tuning. This book will be your one-stop guide to optimize the performance of your Java applications. We will begin by understanding the new features and APIs of Java 9. You will then be taught the practicalities of Java application performance tuning, how to make the best use of garbage collector, and find out how to optimize code with microbenchmarking. Moving ahead, you will be introduced to multithreading and learning about concurrent programming with Java 9 to build highly concurrent and efficient applications. You will learn how to fine tune your Java code for best results. You will discover techniques on how to benchmark performance and reduce various bottlenecks in your applications. We'll also cover best practices of Java programming that will help you improve the quality of your codebase. By the end of the book, you will be armed with the knowledge to build and deploy efficient, scalable, and concurrent applications in Java.
Table of Contents (11 chapters)

The art of profiling

By going through the earlier section, hopefully you have convinced yourself that you are going to need to use a profiling tool to improve the performance of your application. Now, let's look into the art behind profiling. In other words, let's see how our applications are profiled. As you have learned, the main purpose of a profiler is to measure resource usage in your application like CPU utilization, memory consumption, I/O utilization, and so on.

In simpler terms, the profiler needs to record methods that are getting invoked and the time they took to complete the processing. To do this, the profiler needs to collect data; this process is called sampling. The data collection, like call stack, occurs at specified intervals. This is a more passive technique where we are not meddling with the application code. Hence, this approach has less impact...