tomcat - JAXB - Tomcat 服务器上的 permGen 错误

标签 tomcat jaxb permgen

我在运行已部署的应用程序时收到以下错误。根据错误,似乎是 JAXB 造成的。请建议。

java.lang.OutOfMemoryError: PermGen space
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:99)
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:70)
    com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:228)
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:89)
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:70)
    com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:198)
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:84)
    com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:70)
    com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:304)
    com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:319)
    com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:430)
    com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
    com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100)
    com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
    com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
    javax.xml.bind.ContextFinder.find(ContextFinder.java:376)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
    MyJava.GetUserProfile.user(GetUserProfile.java:87)
    com.myapp.struts.TokenDirected.execute(TokenDirected.java:81)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

最佳答案

在 Tomcat 5.5 中有同样的问题 JAXB 会导致大量内存泄漏,因为它会在服务器中创建大量静态变量。

引用资料: http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_java http://blogs.oracle.com/fkieviet/entry/how_to_fix_the_dreaded

关于tomcat - JAXB - Tomcat 服务器上的 permGen 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449978/

相关文章:

deployment - 是否有理由将依赖项放置在 Web 服务器的 lib 目录中而不是将其包含在 War 文件中?

java - XML SOAP 信封在 JAXB 中变为空

java - 为什么 PermGen 的默认大小这么小?

java - 内部类是轻量级的吗?

hibernate - 为 tomcat 配置 hibernate JNDI 的挑战

tomcat - 如何在 TomCat 中转发 URL

java - 我需要在 jboss 运行后保留一个值。我需要在tomcat启动之前使用

java - JAXB:如何指定complexType由不同的XSD生成的绑定(bind)规则?

java - 如何在 Java 中将 XML 插入 soap header

java - 在运行时加载驱动程序 jar 文件导致 Perm Gen Space Error