John Oliver takes a look at both G1 and Shenandoah, explaining how they work, what are their limitations, providing tuning advice. He also looks at recent and future changes to garbage collection.
Monica Beckwith talks about G1 pause (young and mixed) composition, G1's remembered sets and collection set and G1's concurrent marking algorithm, providing performance tuning advice.
Mark Price explores the life cycle of Java code, and how the JVM evolves the runtime representation of code during program execution, providing tips to make sure Java code runs fast.
Chris Newland discusses performance-boosting techniques used by the JVM’s JIT and introduces JITWatch, a tool helping to get the best JVM performance for a code.
Tony Printezis presents how services are deployed and monitored at Twitter, the benefits of using a custom-built JVM, and the challenges of the use of the JVM in an environment like Twitter.
Ian Bull introduces Node4J and explores the performance characteristics and highlights the tools that help one develop, debug and deploy Node.JS applications running directly on the JVM.
Ashley Puls explains what happens to bytecode inside the JVM. It begins with an overview of the Just In Time (JIT) compiler and discusses JIT optimizations such as method inlining and loop unrolling.
Charlie Hunt explains the three performance attributes of throughput, latency and (memory) footprint and how each of these are influenced in terms of JVM garbage collection.
Norman Maurer presents how Apple uses Netty for its Java based services and the challenges of doing so, including how they enhanced performance by participating in the Netty open source community.
Tal Weiss shows how you can easily write your own JVM agent to capture accurate performance data for virtually any type of application from Java microservices to reactive actor systems in Scala.
Emad Benjamin covers various GC tuning techniques and how to best build platform engineered systems; in particular the focus is on tuning large scale JVM deployments.
Jessica Kerr covers some of the concurrency tools existing in JVM languages including ExecutorService, Futures, Akka actors, and core.async coroutines, providing advice on writing deadlock-free code.