我遇到的问题是,Xstreams xstream.fromXML(xmlString)方法生成的类导致我们的Web容器从permgen填充中经历痛苦的垃圾收集。它导致我们的一个树脂3.2.1服务器无响应,迫使重启。
我尝试使用不同的Xstream驱动程序,例如jdom,dom4j,DomDriver,xpp和jettison,但没有运气。
生成的类的名称类似于sun.reflect.GeneratedSerializationConstructorAccessor23
任何人都知道是否可以避免这种情况,或者这是当前Xstream实施(1.4.2)不可避免的副作用?
提前致谢。
答案 0 :(得分:2)
问题是我们正在为每个请求创建一个新的XStream实例。它被设计为多线程并缓存生成的类。将其转换为静态实例可以修复它。
答案 1 :(得分:0)
如果您使用的是CMS收集器,则可以使用-XX:+CMSClassUnloadingEnabled
选项启用perm gen的背景收集。
增加perm gen size也应该有用-XX:MaxPermSize=N
。您可以在this cheat sheet中找到更多与GC相关的选项。
虽然它是JVM GC的调优,但没有修复XStream问题。