I have a Java 7 project that runs scripts every n minutes by n processes. Here is an example of the code that runs the scripts.
ScheduledFuture scheduledFutu
We've had similar issues with a file parser written in groovy, memory leaks like a seave - when you do a lot of String manipulation. We also tried the clearCache() on the classloader and also .removeMetaClass() with no use.
We finally got around this problem by compiling the groovy module as a jar file and including it in the project.
i had same problem when using groovy script for compiling and running. I finally work out with these way: 1. if you work with java version under 7 , you can use codes below to clean your class after compiled
public static void clearAllClassInfo(Class<?> type) throws Exception {
Field globalClassValue = ClassInfo.class.getDeclaredField("globalClassValue");
globalClassValue.setAccessible(true);
GroovyClassValue classValueBean = (GroovyClassValue) globalClassValue.get(null);
classValueBean.remove(type);
}
2. otherwise you are lucky, because you just need add an properties in SystemProperties
-Dgroovy.use.classvalue=true