ClassLoader leaks links

During September 2016 I’ll be speaking about ClassLoader leaks on JavaZone, JDK.IO and JavaOne. For those that listened to my talk and want to read more on the subject, here are the slides, links to my blog series and to the ClassLoader Leak Prevention library on GitHub.

Part I – How to find classloader leaks with Eclipse Memory Analyser (MAT)

Part II – Find and work around unwanted references

Part III – “Die Thread, die!”

Part IV – ThreadLocal dangers and why ThreadGlobal may have been a more appropriate name

Part V – Common mistakes and Known offenders

Part VI – “This means war!” (leak prevention library)

Recording (from JDK.IO):

  • Gunnar Morling

    Hi, nice presentation! Regarding the issue in javax.validation.Validation, we also noticed that it wasn’t correct and changed that into a WeakHashMap<ClassLoader, SoftReference<List<ValidationProvider>>> in Bean Validation 1.1 (released in 2013).

    • Yes, Gunnar, I know, and I usually mention that during the talk. Though I seem to have forgotten that on the occation in the recording above, so good that you added it. 🙂

  • Carles

    First of all, kudos for the blog. It was very helpful to me.

    My problem was that the metaspace (with any type of GC) increased until giving OOME. After weeks of profiling, we saw a problem with iterative class loading and no unloading because the use of Reflection [clazz.newInstance()]. I solved it using the property -Dsun.reflect.noInflation=true.

    I post it in case it could be useful to someone.

    Some links:
    https://programmer.help/blogs/analysis-of-java-metaspace-oom-problems.html
    http://anshuiitk.blogspot.com/2010/11/excessive-full-garbage-collection.html