[size=x-small][/size]
[color=darkred]在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat、jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常。这主要是由于应用服务器的内存不足引起的。这种异常常有以下几种情况( ... 在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat、jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常。这主要是由于应用服务器的内存不足引起的。这种异常常有[color=darkred]以下几种情况(以下以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理):
1. java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
a.如果tomcat是以bat方式启动的,则如下设置:
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。
打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好JvmMs和JvmMx项的值,重启tomcat服务器即可生效。
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
2. java.lang.OutOfMemoryError: Java heap space
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
解决方法:手动设置Heap size
a.如果tomcat是以bat方式启动的,则如下设置:
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。
打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好JvmMs和JvmMx项的值,重启tomcat服务器即可生效。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。[/color][/color]
分享到:
相关推荐
《精通Tomcat - Java Web应用开发》是一本深入解析如何使用Tomcat服务器进行Java Web应用程序开发的专业书籍。...通过阅读此书,你将能够熟练运用Tomcat进行高效的Java Web开发,并具备解决实际问题的能力。
Apache Tomcat 9.0服务器工具是开源软件,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。作为Java EE Web容器,Tomcat是Apache软件基金会 Jakarta项目的一部分,它提供了对Java标准版(Java SE)的轻...
SSH整合与Tomcat内存优化是Java Web开发中的关键环节,主要涉及到Spring、Struts和Hibernate这三个框架的集成以及Tomcat服务器性能的调优。这里我们将深入探讨这两个主题,并结合提供的资源进行详细阐述。 首先,...
通过阅读《Tomcat与Java Web开发技术详解》,读者不仅能掌握Tomcat服务器的深度使用技巧,还能系统地学习到Java Web开发的核心知识,为实际项目开发打下坚实基础。书中的实例和实践指导将帮助读者更好地理解和应用...
在使用Apache Tomcat 8.5.9时,用户可能需要关注的方面包括正确配置服务器端口、设置合适的内存分配、优化连接器参数、确保安全性设置以及正确部署Web应用。对于开发者,了解如何使用`webapps`目录、`conf`目录下的...
2. **JMX监控**:通过JMX(Java Management Extensions)可以远程监控Tomcat的状态,包括内存、线程、MBean等。 **六、扩展性与社区支持** Tomcat 6.0拥有活跃的开发者社区,提供了大量的扩展插件和第三方模块,如...
博客链接提及的“https://gui-198641.iteye.com/blog/184290”可能是博主分享的一个关于如何优化Tomcat内存设置的实战经验,它可能包含了一些配置示例和问题排查技巧。 【标签】:“源码”提示我们可能需要理解...
Apache Tomcat 5.5.35 是一个广泛使用的开源软件,它是一个符合Java Servlet和JavaServer Pages(JSP)规范的应用服务器,...了解并熟练掌握Tomcat的配置、管理和优化技巧,对于任何Java Web开发者来说都是非常重要的。
本篇将深入探讨如何在Tomcat上发布JavaWeb项目,以及如何进行Tomcat的配置优化,包括去除项目名称和端口号、调整内存配置和设置并发线程数。 【去除项目名称和端口号】 在默认情况下,访问JavaWeb项目时URL中会...
【标题】"Tomcat8/window/64"指的是在Windows 64位操作系统上使用的Tomcat 8服务器软件...总之,Tomcat 8是Java Web开发的重要基础设施,无论是在学习还是实际工作中,理解和掌握其工作原理及配置技巧都是非常必要的。
【标题】"Tomcat7.0.86"是一个关键的Java应用服务器,它专注于运行基于Servlet和JavaServer Pages(JSP)的应用程序。...了解并熟练掌握Tomcat的配置、管理和优化技巧,对于Java Web开发者来说是至关重要的。
10. **社区支持**:由于Tomcat的开源性质,它有一个活跃的社区,提供了丰富的文档、教程和问题解答,有助于开发者解决问题和学习使用技巧。 总结,Tomcat 5.5.23是一个经典的Java Web服务器版本,尽管现在已有更...
- 开启JVM的内存优化,合理设置堆内存大小。 7. **日志管理**: Tomcat的日志信息默认保存在`logs`目录下,可以通过修改`logging.properties`文件定制日志级别和输出位置。 8. **虚拟主机**: Tomcat6支持多个...
在8.5.x系列版本中,Tomcat引入了若干增强和改进,比如更好的性能、内存使用优化、新的SSL/TLS特性,以及对Java新版本的支持。版本8.5.68可能修复了一些已知的安全漏洞,提升了整体安全性。 对于初学者,了解如何...
《轻量级服务器架构全面解析:...了解和掌握Tomcat的架构、集成方式以及性能优化技巧,对于提升Java Web应用的运行效率和稳定性至关重要。通过阅读提供的PDF文档,开发者可以进一步深化对Tomcat的认识,提升自身技能。
2. JMX监控:通过JMX(Java Management Extensions),你可以远程监控Tomcat的运行状态,如内存使用、线程池状态等。 六、性能优化 1. 调整线程池:根据服务器硬件配置和预期负载,调整`conf/server.xml`中的...
【标题】:“Tomcat Tomcat” 【描述】:“Tomcat Tomcat”可能指的是Apache Tomcat服务器的双重提及,Apache Tomcat是一款开源的Java...理解和掌握Tomcat的使用、配置以及优化技巧,对于Java Web开发者来说至关重要。
理解并掌握其工作原理和配置技巧,对于提升Java Web应用的开发效率和运行质量具有重要意义。随着技术的不断迭代,尽管新的版本已经发布,但Tomcat 5.0.30仍有许多实用价值,值得我们去挖掘和研究。
【标题】:“Tomcat6 Server” 【描述】:Tomcat6 是一款经典的Java应用服务器,以绿色版和安装版的...通过理解其工作原理、配置方法和故障排查技巧,开发者可以更好地利用Tomcat6来构建和维护高质量的Java Web应用。
以上就是关于"Java中Eclipse和Tomcat配置"以及"面试技巧"的主要内容。通过深入理解和实践这些知识点,不仅可以高效地进行开发工作,也能在面试中展现出专业水平。同时,不断更新自己的知识库,适应不断发展的技术和...