Some of the hardest to tackle production problems are performance problems. A very important but still widely unknown feature of the Java Virtual Machine is the ability to provide thread dumps. They show exactly where the application code currrently is executing. In case of performance problems, specific code areas typically show up prominently in thread dumps. Examples are waiting for remote services like databases or REST calls, waiting for local locking operations or waiting for exhausted pooled resources like connection pools.
A big strength of thread dump is, that they are production safe and typically do not need any preparation before one can use them.
To make efficient use if thread dumps, one needs to gain some experience in interpreting them and efficiently extracting the most important information.
The speaker uses thread dumps for performance analysis a lot. The talk will give lots of real life examples.