定位问题,jstack命令查看线程:

看提交记录,怎么解决的,一目了然:

查看XStream源码:
public XStream() {
this((ReflectionProvider)null, (Mapper)((Mapper)null), (HierarchicalStreamDriver)(new XppDriver()));
}
// 点进this,来到这个方法,方法上标注了Deprecated
public XStream(ReflectionProvider reflectionProvider, Mapper mapper, HierarchicalStreamDriver driver) {
this(reflectionProvider, driver, (ClassLoader)(new CompositeClassLoader()), mapper);
}
可以看出,XStream内部又会new一个CompositeClassLoader,后面的代码中使用Class.forName调用该loader:

minor gc不会回收这种class loader对象,那就会导致heap被占满并full gc。
网友评论