2

我遇到了一个问题,即由 Xstreams xstream.fromXML(xmlString) 方法生成的类导致我们的 Web 容器从 permgen 填充中经历痛苦的​​垃圾收集。它导致我们的其中一个树脂 3.2.1 服务器变得无响应,从而强制重新启动。

我尝试使用不同的 Xstream 驱动程序,例如 jdom、dom4j、DomDriver、xpp 和 jettison,但没有成功。

生成的类的名称类似于 sun.reflect.GeneratedSerializationConstructorAccessor23

任何人都知道是否可以避免这种情况,或者这是当前 Xstream 实现(1.4.2)的不可避免的副作用?

提前致谢。

4

2 回答 2

2

问题是我们为每个请求创建了一个新的 XStream 实例。它被设计为多线程并缓存生成的类。将其转换为静态实例修复了它。

于 2012-06-11T19:19:34.227 回答
0

如果您使用 CMS 收集器,您可以使用-XX:+CMSClassUnloadingEnabled选项启用 perm gen 的后台收集。也增加烫发大小应该是有帮助-XX:MaxPermSize=N的。您可以在此备忘单中找到更多与 GC 相关的选项。

虽然是 JVM GC 的调优,但不是修复 XStream 的问题。

于 2012-06-09T14:24:03.607 回答