使用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空间。
这似乎是春季启动时的一个错误。我找不到在春季启动网站上报告错误的地方,所以我在这里写了。请有人帮帮我。