The JVM and Java have come along way in terms of performance over the years. The JIT optimizes our code, helps to get out most of our code, allowing us to concentrate on important aspects and not get lost in micro-optimization. While this is true most of the times, there are situations when the JVM or JIT get in our way and do more harm than good.
This talk will do a deep dive into many aspects of the JVM that I have found problematic while working on a Highly Performant Network Frameworks and related code (for example Netty). It will show examples for how you can work around these problems, when possible at all. While these problems were encountered while working on network related code, most of these are true for the JVM in general.