-
What Garbage Collector are you using?
A study of close to 85,000 runtimes analyzes the popularity of different Garbage Collectors and elaborates on the reasons why the results are somewhat surprising.
Filed under: Garbage Collection
-
Debugging a dying Eclipse instance
The story starts with our decision to go to Devoxx. With a booth. By a caravan. Driving 2,200 kilometers. But this is not going to be a travel story, do not worry. During the travel we taught our marketing guys to be prepared for doing demos in our booth. After all, what’s the benefit of dragging all the droids to Antwerp if they are not even good for a demo or two. As we had ~30 hours of driving time ahead of us, we thought we have enough time to get the droids up to speed. First stop – verifying the required infrastructure. One of the droids had managed to install a JDK and Eclipse all by himself. So far so good. But when firing up the Eclipse and adding our demo project resulted in CPU usage jumping to 100% and Eclipse becoming completely unresponsive.
Filed under: Garbage Collection
-
Slow death – the cause and the remedy
Another day in the office. Except that you have just realized that the application at your guard seems to take forever to respond to requests. Operations which usually take just few hundred milliseconds to complete are now slower than snails on Xanax. This weird situation gradually worsens throughout the next hours. You manage to discover that the CPU usage is unusually high. Before you have time to dig further you have to surrender to the boss breathing down your neck. You restart the application on his demand. Only to discover the Xanax guys to return within half an hour. This time you decide to stand your ground and find out the cause. Monitoring tools show high CPU usage and quick growth in memory consumption. In conjunction with quickly decreasing throughput. You plot the data on a graph and see the following trend taking shape:
Filed under: Garbage Collection
-
Why can’t I turn off the Garbage Collector?
Let’s start with a quick rewind to the early days of my career as a Java developer. I wanted to eliminate Garbage Collection (GC) pauses from a test that I was conducting. Lo and behold I was annoyed when I discovered that it couldn’t be done. Back then I left the issue for a “design error” and moved on with my life. Angry at James Gosling or whoever was responsible for the decision. A couple of days ago I ran into a situation that reminded me of those old times. Luckily, the years gone by have accumulated some insight about JVM internals in me, and I thought I’d share my current thoughts in a form of a blog post.
Filed under: Garbage Collection