Spring PermGen空间问题

Spring PermGen空间问题,第1张

概述我一直有一个非常严重的生产问题,我希望有人可以提供帮助.我正在使用Spring 3.1.0并且对它的功能印象深刻.在开发过程中,一切都很好.不幸的是,在部署到生产时,我们遇到了一些问题.我们正在使PermGen空间出现内存错误.在我们的开发/测试框中,我们有以下设置:-Xms2048m -Xmx2048m -XX:PermSize = 512m -XX:Ma

我一直有一个非常严重的生产问题,我希望有人可以提供帮助.

我正在使用Spring 3.1.0并且对它的功能印象深刻.

在开发过程中,一切都很好.不幸的是,在部署到生产时,我们遇到了一些问题.

我们正在使PermGen空间出现内存错误.

在我们的开发/测试框中,我们有以下设置:
-xms2048m -Xmx2048m -XX:PermSize = 512m -XX:MaxPermSize = 1024m(请注意我们不确定这些设置是否正确)

在我们的生产包装盒上,我们有以下设置:
-xms3056m -Xmx3056m -XX:PermSize = 128m -XX:MaxPermSize = 512m(再次请注意,我们不相信这些是正确的设置)

不可否认,生产环境完全不同,因为它上面运行的应用程序更多.

根据我读过的here,我们应该将max和min设置为相同的值,并将maxpermsize设置为其中任何一个的1/4.

我已经在许多地方(包括here)读到,由于泄漏而重启服务器可能是不可避免的.有谁知道这是真的吗?

另外,有人知道Spring框架通常需要多少内存?部署应用程序后,我发现使用的内存量增加了大约345 MB.我知道在启动应用程序时需要实例化一些类,但这似乎很多.我有不正确的设置吗?我们目前只使用Spring JDBC.有没有办法将框架仅限于这些类?

我们的代码库相当大,我理解JAXB can cause serious problems.

我见过使用的建议

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweePingEnabled

here和here.使用这些参数是否有任何可能的负面影响?

所以,总结一下:

>我们的设置是否正确,如果没有,它们应该是什么?
> Spring不时会重新启动服务器
框架?
> Spring应该占用多少内存?有没有
限制使用的类的方法?
>是否有任何可能的副作用
使用-XX:CMSClassUnloadingEnabled
-XX:CMSPermGenSweePingEnabled?

任何和所有的帮助将不胜感激.提前致谢.

堆栈跟踪在下面(还有更多,但我不能全部发布):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter': Instantiation of bean Failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: PermGen space    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.instantiateBean(AbstractautowireCapablebeanfactory.java:997)    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.createBeanInstance(AbstractautowireCapablebeanfactory.java:943)    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.doCreateBean(AbstractautowireCapablebeanfactory.java:485)    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.createBean(AbstractautowireCapablebeanfactory.java:456)    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.createBean(AbstractautowireCapablebeanfactory.java:286)    at org.springframework.web.servlet.dispatcherServlet.createDefaultStrategy(dispatcherServlet.java:788)    at org.springframework.web.servlet.dispatcherServlet.getDefaultStrategIEs(dispatcherServlet.java:757)    at org.springframework.web.servlet.dispatcherServlet.initHandlerAdapters(dispatcherServlet.java:565)    at org.springframework.web.servlet.dispatcherServlet.initStrategIEs(dispatcherServlet.java:422)    at org.springframework.web.servlet.dispatcherServlet.onRefresh(dispatcherServlet.java:410)    at org.springframework.web.servlet.FrameworkServlet.onApplicationEvent(FrameworkServlet.java:752)    at org.springframework.web.servlet.FrameworkServlet$ContextRefreshListener.onApplicationEvent(FrameworkServlet.java:989)    at org.springframework.web.servlet.FrameworkServlet$ContextRefreshListener.onApplicationEvent(FrameworkServlet.java:1)    at org.springframework.context.event.GenericApplicationListenerAdapter.onApplicationEvent(GenericApplicationListenerAdapter.java:51)    at org.springframework.context.event.sourceFilteringListener.onApplicationEventInternal(SourceFilteringListener.java:97)    at org.springframework.context.event.sourceFilteringListener.onApplicationEvent(SourceFilteringListener.java:68)    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324)    at org.springframework.context.support.AbstractApplicationContext.finishrefresh(AbstractApplicationContext.java:929)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:467)    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)    at org.springframework.web.servlet.httpServletBean.init(httpServletBean.java:133)    at javax.servlet.GenericServlet.init(GenericServlet.java:241)    at weblogic.servlet.internal.StubSecurityHelper$ServletInitaction.run(StubSecurityHelper.java:283)    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)    at weblogic.servlet.internal.StublifecycleHelper.createOneInstance(StublifecycleHelper.java:58)    at weblogic.servlet.internal.StublifecycleHelper.
最佳答案要查看permGen VM,您可以查看JConsole中的MemoryPool MBean.此外,您可以添加以下JVM参数(如果您还没有)

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/msp/log 

用于heapdumps集合.

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/msp/log/gc.log` 

用于GC相关信息.

这将有助于理解垃圾收集模式,并可能指导您提出更好的限制.

总结

以上是内存溢出为你收集整理的Spring PermGen空间问题全部内容,希望文章能够帮你解决Spring PermGen空间问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1258193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)