`

Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案分享(转)

 
阅读更多

问题
linux的jetty下发布程序后再启动jetty服务时,发现启动不了,从日志中找到报java.lang.OutOfMemoryError: PermGen space。

原因分析
PermGen space,全称是Permanent Generation space,指的是内存3带中的永久区域。当java中间件启动时,会将相关的jar包和.class加载到永久区域,而用就区域的空间是固定的,虽然可以设置。报这个错的原因就是在启动加载.class时,永久区域溢出了。我这次碰到的原因可能很复杂,由于本人能力有限,大概说一说,如果理解错的,还请大牛们指点!这次本人怀疑可能是老版本在永久区域留下的东西没有被清掉,然后新版本上的时候永久区空间不够了,因为在jetty的start.ini配置中有一项配置是让CMS可以清除永久区的东西的那一项我们的jetty上是没有设置的。当然这也是本人的猜测,本人能力有限,也无法考证。

解决方案:
1、在jetty的jetty.XML配置文件的<Configure id="Server" class="org.eclipse.jetty.server.Server">节点下加入如下内容:

<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>-1</Arg>
</Call>
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormKeys</Arg>
<Arg>-1</Arg>
</Call>
2、修改start.ini文件中的如下部分:

--exec
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000

-Dcom.sun.management.jmxremote

-Dorg.eclipse.jetty.util.log.IGNORED=true

-Dorg.eclipse.jetty.util.log.stderr.DEBUG=true

-Dorg.eclipse.jetty.util.log.stderr.SOURCE=true

 -Xmx2000m
-Xmn512m
-XX:PermSize=512m
-XX:MaxPermSize=1024m

-verbose:gc

-XX:+PrintGCDateStamps

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-XX:+PrintTenuringDistribution

-XX:+PrintCommandLineFlags

-XX:+DisableExplicitGC

 -XX:+UseConcMarkSweepGC

-XX:ParallelCMSThreads=2

 -XX:+CMSClassUnloadingEnabled  

-XX:+UseCMSCompactAtFullCollection

-XX:CMSInitiatingOccupancyFraction=80

-----------------------------------------------------------

新增的 -Dsun.rmi.dgc.client.gcInterval=3600000,
-Dsun.rmi.dgc.server.gcInterval=3600000是设置客户端和服务端GC启动的时间。
-Xmx2000m最大缓存空间、 
-Xmn512m新生代大小、
-  -XX:PermSize=512m内存永久区初始大小、
-  -XX:MaxPermSize=1024m最大永久区大小,
-  -XX:MaxPermSize=1024m允许CMS清楚老年代,
-  -XX:+CMSClassUnloadingEnabled,
-  -XX:+CMSClassUnloadingEnabled 允许CMS清楚持久代。

- 设置了这些后,问题成功解决。

 

http://www.flybi.net/article/121

分享到:
评论

相关推荐

    java.lang.NoClassDefFoundError: javax/persistence/EntityListener

    总的来说,解决`java.lang.NoClassDefFoundError`需要仔细检查项目结构、依赖管理以及运行环境的配置,确保所有组件都协同工作,类加载机制正常。对于Spring和OSGi环境,理解其特有的类加载规则至关重要。

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    在Java编程中,`java.lang.ClassNotFoundException`是一个常见的运行时异常,它表示JVM尝试加载一个类时,找不到对应的.class文件。在这个特定的错误中,我们看到的是`org.apache.commons.dbcp.BasicDataSource`,这...

    jetty-io-9.4.43.v20210629-API文档-中英对照版.zip

    赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....

    java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider

    在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时异常,它发生在类加载器尝试加载一个在编译时存在但在运行时找不到的类定义时。这个错误通常意味着类路径设置不正确或者依赖项没有正确地被包含...

    jetty.project-jetty-9.4.35.v20201120.rar

    标题中的"jetty.project-jetty-9.4.35.v20201120.rar"指的是Jetty项目的9.4.35版本,发布于2020年11月20日。这个压缩包包含了该版本的所有源码、编译后的类库以及相关的配置文件。 在Java Web开发中,Servlet容器是...

    javax.servlet-3.0.0.v201112011016-API文档-中英对照版.zip

    Maven坐标:org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016; 标签:eclipse、jetty、orbit、javax、servlet、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    Maven坐标:org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016; 标签:eclipse、jetty、orbit、javax、servlet、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    jetty 9.4.9

    总之,Jetty 9.4.9是一个功能强大且高效的Web服务器和Servlet容器,适合那些寻求轻量级解决方案的开发者。通过使用提供的servlet-api.jar和jsp-api.jar,开发者可以利用Servlet和JSP技术构建和部署Web应用程序。同时...

    jetty-client-9.4.43.v20210629-API文档-中文版.zip

    赠送jar包:jetty-client-9.4.43.v20210629.jar; 赠送原API文档:jetty-client-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-client-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-client-...

    jetty-http-9.4.11.v20180605-API文档-中英对照版.zip

    赠送jar包:jetty-http-9.4.11.v20180605.jar; 赠送原API文档:jetty-http-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-http-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-...

    jetty-distribution-9.4.47.v20220610

    jetty9.4.47用于部署或替换jar升级jetty解决安全漏洞 下载镜像地址https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.47.v20220610/

    jetty所需jar包

    这通常通过创建一个jetty.xml配置文件来完成,或者通过代码动态配置。 总结,启动Jetty所需jar包包括了Jetty的核心组件以及各种扩展功能。正确地理解并配置这些jar包是成功运行Jetty的关键。在实际项目中,应根据...

    jetty-http-9.4.43.v20210629-API文档-中英对照版.zip

    赠送jar包:jetty-http-9.4.43.v20210629.jar; 赠送原API文档:jetty-http-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-http-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-...

    jetty-server-8.1.8.v20121106-API文档-中文版.zip

    赠送jar包:jetty-server-8.1.8.v20121106.jar; 赠送原API文档:jetty-server-8.1.8.v20121106-javadoc.jar; 赠送源代码:jetty-server-8.1.8.v20121106-sources.jar; 赠送Maven依赖信息文件:jetty-server-8.1.8...

    jetty-6.1.26.zip

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,与Tomcat相似,它为开发和部署Web应用程序提供了一种高效的选择。Jetty在设计上注重灵活性和可扩展性,使得它在处理HTTP协议、WebSocket协议以及部署各种...

    jetty-distribution-9.4.36.v20210114.zip

    9. **bin**: 这个目录包含了一些操作系统特定的脚本,如`jetty.sh`和`jetty.cmd`,用于在不同的平台上启动和停止Jetty服务。 如果你使用的是Java集成开发环境(IDE),如IntelliJ IDEA或Eclipse,可以利用这些工具...

    jetty start 9.2.13 项目所需要的完整jar包,免费。jetty启动调试

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,广泛用于开发、测试和部署Web应用程序。在标题和描述中提到的是Jetty版本9.2.13,这是一个稳定且常用的版本,提供了完整的jar包,特别适用于启动和调试...

    jetty-security-9.3.19.v20170502-API文档-中文版.zip

    赠送jar包:jetty-security-9.3.19.v20170502.jar; 赠送原API文档:jetty-security-9.3.19.v20170502-javadoc.jar; 赠送源代码:jetty-security-9.3.19.v20170502-sources.jar; 赠送Maven依赖信息文件:jetty-...

    jetty-client-9.4.11.v20180605-API文档-中文版.zip

    赠送jar包:jetty-client-9.4.11.v20180605.jar; 赠送原API文档:jetty-client-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-client-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-client-...

    jetty-server-8.1.8.v20121106-API文档-中英对照版.zip

    赠送jar包:jetty-server-8.1.8.v20121106.jar; 赠送原API文档:jetty-server-8.1.8.v20121106-javadoc.jar; 赠送源代码:jetty-server-8.1.8.v20121106-sources.jar; 赠送Maven依赖信息文件:jetty-server-8.1.8...

Global site tag (gtag.js) - Google Analytics