That is correct: OpenJDK 1.6 & 1.7 (the most recent versions available on Ubuntu 13.10) and Oracle's JDK 1.8.0-b132. I tested a variety of options, including CMSClassUnloadingEnabled with UseConcMarkSweepGC, varying amounts of PermSize, MaxPermSize, MinPermHeapExpansion, MaxPermHeapExpansion, changes in SoftRefLRUPolicyMSPerMB, of course DoEscapeAnalysis (which, even if it reduces PermGen occupation somewhat, does not solve the leak). The results of the investigation is that openjdk1.6/1.7 are rather lazy with finalization. JDK1.8 was more prompt, but because of the nature of finalization (which runs using a separate thread) it cannot be relied upon to take place when needed. Hence I would personally recommend the explicit runFinalization() with JDK1.8 as well.