Automatic memory management is said to be one of the greatest features of Java as well as other managed programming languages. At the same time, JVM specification says almost nothing about how exactly it should work! As a result, there are so many various algorithms and strategies of Garbage Collection, each with its own benefits, trade-offs and implementation details. For example, different GCs answer the question "when should we reclaim an object that is considered to be garbage?" differently. It is not so obvious, and every answer can dramatically change the behaviour of an application. In this talk we will find out why GC store some dead objects on the heap, how this can influence your code and how to protect an application from zombie apocalypse.

Talk Level:
ADVANCED

Bio:
Works at Excelsior since 2011, is one of the Excelsior JET developers (full JVM implementation based on optimizing AOT compilation). Basically, works with runtime: GC, class loading, concurrency maintenance, profiling and so on. Besides, supports one plugin for the JET-compiled applications' debugging in GDB and writes posts for Excelsior JET Team Blog. Also, he is co-founder and co-lead of JUGNsk — an official Java Users Group in Novosibirsk, helps to organize meetups about Java and JVM. In his free time teaches C/C++ courses at Novosibirsk State University.