Latest

Oct
22

"Kubernetes made my latency 10x higher!".. or maybe not?

As we migrate teams over to Kubernetes, I’m observing that every time someone has an issue there is a knee-jerk reaction like the title. Kubernetes is to blame. Investigation usually shows that the explanation boils down to the nuances of blending complex systems together.
7 min read
May
29

Sizing Kubernetes pods for JVM apps without fearing the OOM Killer

Migrating teams to from on-prem/EC2 infrastructures to Kubernetes we hit some issues with resource allocation of JVM apps. I will explain how running in Kubernetes forces us to think about capacity planning more than we’re used to, changing some of the assumptions we made before containers.
9 min read
Apr
28

GC forensics by example: multi-second pauses and allocation pressure

This post will analyze a Hotspot GC log exhibiting large GC pauses (> 1 min) leading to allocation pressure and system load as a cause of pathological behaviour on Hotspot’s garbage collector.
12 min read
Jan
30

How does the default hashCode() work? (and why does it affect biased locking?)

In which scratching the surface of hashCode() leads to a speleology trip through the JVM source reaching object layout, biased locking, and surprising performance implications of relying on the default hashCode().
11 min read
Aug
28

Contention on sun.misc.Cleaner

I found recently a (dying) JVM with about 10 threads BLOCKED on the sun.misc.Cleaner class instance. This was not the root cause of the failure, but I could learn something by looking into those blocks.
3 min read
Jun
25

How does the JVM change tenuring thresholds, and when?

On a recent Tuesday evening I ran into this 3 year old JVM question in Stack Overflow. GC features and
1 min read