Apache PDFBox is an open-source library for handling PDF documents in Java. A recent deadlock issue was identified in the library, which occurs when two threads are blocked, waiting for resources held by each other. The problem was diagnosed using a thread dump, and a ticket was filed, resulting in a prompt fix by the PDFBox team.
This post discusses deadlock in multi-threaded applications, specifically in Kotlin. It defines deadlock and provides a practical example using trains on a single track. A sample Kotlin program illustrates how deadlock occurs between two threads. Troubleshooting deadlock involves capturing thread dumps and analyzing them with tools like yCrash for clearer insight.
The java.lang.ClassLoader#loadClass() API is essential for loading Java classes dynamically, primarily utilized by frameworks and libraries. Frequent calls can degrade performance, causing application unresponsiveness. Solutions include loading classes once at startup and caching instances, which can mitigate threading issues observed during runtime.
The World’s Largest 6th Annual All Day DevOps conference took place on October 28, 2021, featuring architect Ram Lakshmanan, who presented a webinar on the "7 habits of highly effective Performance Troubleshooters." The presentation covered forecasting problems, addressing incidents in real-time, root cause identification, and prevention strategies.
The 'java.lang.System.getProperty()' API allows Java developers to read system properties but can degrade application performance when used in critical code paths due to synchronization issues. A real-world example shows 189 threads getting blocked, impacting response time. Solutions include upgrading to JDK 11 or caching property values for improved performance.
The thread dump is crucial for diagnosing Java application issues like CPU spikes and memory usage. A study using the Pet Clinic app on AWS EC2 assessed the impact of capturing thread dumps every 5 and 2 minutes. Results indicated no significant overhead on CPU, memory, or response times for either interval.
JAX - Online conference brings together Java and software architecture enthusiasts to share knowledge globally. This year featured a webinar on "JVM Internals in 1 slide," where attendees learned JVM fundamentals and how to troubleshoot, tune, and optimize JVM performance effectively. A presentation deck accompanies the session.
The post highlights the complexity of managing over 600 JVM arguments related to garbage collection and memory. It emphasizes seven key arguments across four videos that enhance application performance for Java, Scala, and Jython. Topics include heap size, thread stack size, garbage collection settings, and error handling.
