diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompAPIDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompAPIDriver.java index 39d8996e296a..f4353c85a8e5 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompAPIDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompAPIDriver.java @@ -27,6 +27,7 @@ import javax.tools.*; import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.lang.reflect.Field; import java.net.URI; import java.util.List; import java.util.concurrent.BlockingQueue; @@ -145,6 +146,18 @@ class CompAPIDriver { assert !processing; //assert myCompilationResults.isEmpty() : myCompilationResults; myCompilationResults.clear(); + cleanupInternalFields(); + } + + private static void cleanupInternalFields() { + try { + Field freelist = Class.forName("com.sun.tools.javac.util.SharedNameTable").getDeclaredField("freelist"); + freelist.setAccessible(true); + freelist.set(null, com.sun.tools.javac.util.List.nil()); + } + catch (Exception ignored) { + + } } public void offerClassFile(URI uri, byte[] bytes) {