我定义了一个自定义类加载器PluginClassLoader,我用它来执行任务,执行一个任务会创建一个PluginClassLoader。 过了一会儿,我的jvm报告“java.lang.Out0fMemoryError: Compressed class space”。 我用jmap dump,发现几乎内存都被PluginClassLoader占用了,而且有大量的PluginClassLoader。 但我的任务执行完成后会返回,并且没有其他引用 PluginClassLoader。
我的任务执行代码
SQLTaskHandler sqlTaskHandler = (SQLTaskHandler) Class.forName(className, true, getPluginClassLoader()).newInstance();