我正在尝试配置AtomPullServer以查看Apache CXF日志.
我使用的是Tomcat 7,Apache CXF 2.7.6,Apache Abdera 1.1.3.
根据文档,我唯一要做的就是将它添加到Spring上下文配置文件中
<bean id="atomPullServer" class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init">
<property name="level" value="ERROR" />
<property name="maxInMemorySize" value="100"/>
</bean>
<jaxrs:server id="atomServer" address="/atom">
<jaxrs:serviceBeans>
<ref bean="atomPullServer"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean id="feed" class="org.apache.cxf.jaxrs.provider.atom.AtomFeedProvider" />
<bean id="entry" class="org.apache.cxf.jaxrs.provider.atom.AtomEntryProvider" />
<bean class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
</jaxrs:providers>
</jaxrs:server>
但是当我添加它时,我得到(在控制台中)线程中的异常“http-bio-8080-exec-X”java.lang.OutOfMemoryError:访问任何服务时的PermGen空间,当然服务器没有回应了.如果我删除这些行一切正常.
知道可能是什么问题吗?
解决方法:
当JVM加载的java类元信息量超过阈值时,通常会发生java.lang.OutOfMemoryError:PermGen空间错误.
这个问题可能有不同的可能原因(讨论here),但它可能只是配置原子服务器触发加载不适合默认permgen区域的其他类.
您应该尝试通过设置以下JVM选项来增加Tomcat JVM的PermGen大小:
-XX:MaxPermSize=256m
有关更多信息,请参阅this answer.