The Dell Boomi Core servers faced a performance outage due to a memory leak, identified through yCrash's root cause analysis. An investigation revealed that a SQL query in scheduled jobs caused excessive data load, resulting in high memory pressure. Correcting the query restored normal performance and underscored the need for precise monitoring.
This post compares the performance of HashMap, Hashtable, and ConcurrentHashMap through practical examples. It recommends ConcurrentHashMap for its thread-safe implementation, despite being marginally slower than HashMap. Testing showed HashMap performed best, but was not thread-safe, while Hashtable was significantly slower due to its synchronization constraints.
The post discusses a memory leak issue in a Java application running on AWS that caused unresponsiveness after a few hours. Using the yCrash tool, the problem was traced to an anonymous inner class that failed to stop a thread under certain exceptions. The solution involved moving the thread termination code to a 'finally' block, resolving the issue.
ConFoo Montreal is a conference for developers that encourages knowledge sharing. Architect Ram Lakshmanan presented a session titled "Let's crash the applications!" covering issues like memory leaks, thread leaks, and deadlocks. Understanding these triggers aids in diagnosing and resolving related problems effectively. Slides from the talk are available for reference.
The article outlines a three-step automated approach to troubleshoot OutOfMemoryError in applications. First, it suggests capturing heap dumps using specific JVM arguments to gather memory data. Next, it recommends restarting the application via a custom script to prevent instability. Lastly, it discusses analyzing heap dumps with tools or an API for effective diagnosis.
A web application's memory optimization attempt revealed disappointing results. Despite using JVM arguments '-XX:+UseG1GC' and '-XX:+UseStringDeduplication', no reduction in memory usage was observed. The application's short-lived string objects led to negligible duplicate strings being eliminated, highlighting the need for code refactoring to prevent duplicate string creation and improve memory efficiency.
Throughput measures productive work done by an application over time, distinguishing it from non-productive tasks such as garbage collection (GC). If 2 minutes out of 60 minutes are spent on GC, throughput drops to 96.67%. Poor throughput can result from long GC pauses, memory leaks, consecutive full GCs, or resource contention.
The article addresses sudden CPU spikes in Java applications, often caused by repeated Full Garbage Collections (GC) due to memory leaks and infinitely looping threads. It provides troubleshooting strategies using tools like gceasy.io for analyzing GC logs and fastthread.io for identifying looping threads, along with real-world examples demonstrating effective resolutions.
