Laurentio Spilca who is a skilled Java and Spring developer and an experienced technology instructor has written a book called Troubleshooting Java: Read, debug, and optimize JVM applications. The book teaches code investigation techniques that will help efficiently understand how Java apps work, how to optimize them, and how to fix the bugs that break them. It also covers the basics of debugging to advanced methods for locating problems in microservices architectures, and saves hours or even days of time. Each new technique is explained with lively illustrations and engaging real-world examples. While reading this book, we found the author used our yCrash-fastThread tool on explaining one such example: Investigating the deadlock issue.
Fig: “Troubleshooting Java” by Laurentiu Spilca
In this section, 10.2.2 “Using tools to better grasp thread dump”, the author explained that he prefers a simpler way to visualize the data in the thread dump. So, he uploaded a thread dump in fastThread tool collected from his environment and within moments, it processed the thread dump and presented a comprehensive analysis report, complete with visual representations and actionable insights including deadlock detection, dependency graphs, stack traces, resource consumption and even a flame graph.
Fig: Book explaining how to upload and analyze a thread dump using fastThread
After analyzing the thread dump, the tool highlighted a deadlock issue in his thread dump. With its insightful analysis, he was able to identify _Consumer and _Producer threads that were causing the deadlock.
Fig: Tool reporting Deadlock problem in the uploaded thread dump
Armed with this knowledge, he quickly identified the root cause of a deadlock which showed the status of all threads of an app at that time the thread dump was generated. This helped him to find which thread is waiting for another.
The rapid turnaround time made possible by fastThread allowed him to swiftly address the root cause, saving valuable time and resources.