spring boot throw OutOfMemoryError:使用velocity-tools时的PermGen空间

时间:2016-11-03 02:06:55

标签: java spring spring-mvc spring-boot velocity

使用spring-boot时,会抛出OutOfMemoryError:PermGen空间。 stacktrace就像:

java.lang.OutOfMemoryError: PermGen space
  at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:219)
  at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:109)
  at org.springframework.boot.web.servlet.view.velocity.EmbeddedVelocityToolboxView.getToolboxConfigFileAwareServletContext(EmbeddedVelocityToolboxView.java:73) 
  ...

我在EmbeddedVelocityToolboxView.getToolboxConfigFileAwareServletContext上阅读了源代码:

    private ServletContext getToolboxConfigFileAwareServletContext() {
        ProxyFactory factory = new ProxyFactory();
        factory.setTarget(getServletContext());
        factory.addAdvice(new GetResourceMethodInterceptor(getToolboxConfigLocation()));
        return (ServletContext) factory.getProxy(getClass().getClassLoader());
    }

调试之后,我发现每次spring-boot生成一个速度视图时,都会调用此方法,并创建一个新的java类。所以几分钟后,它会抛出OutOfMemoryError:PermGen空间。

这似乎是春季启动时的一个错误。我找不到在春季启动网站上报告错误的地方,所以我在这里写了。请有人帮帮我。

0 个答案:

没有答案