今天在做公司一个工程2个版本的运行时,突然出现新版的工程在tomcat中内存溢出。
因为错误比较明显,但也经过了一些折腾。
我的tomcat版本为最新的7.0.34,eclipse为3.7
在tomcat的wiki上其实对内存溢出和内存错误已经有一定的分析和说明
tomcat内存出错的一些原因:
1、建立的过多的对象,导致堆区内存不足
2、有代码被对象持有而导致垃圾收集器无法清理
3、超过了系统文件的大小限制,这样你需要提高你的权限或者用一个不受限制的。
4、你工程的线程数目过多,某些系统在同一个进程里对线程数目有限制,去看系统文档,和学习怎么提高这个数目
5、系统也许限制了你的进程的内存大小
6、JVM有bug,一般在低版本的jvm才出现
还介绍了内存溢出的一些常见处理方式
1、如果发现一个servlet装载大量的内容进入内存,你应该检查下你的代码是不是有bug
2、手动增加堆内存,导致没有空间去创建必须创建的那些线程所需要的栈空间,每个系统对线程创建所要消耗的栈默认不太相同,但是基本都高于2M,而且这个不能通过设置-Xss去减少
所以有一个规则,在32位系统下,对堆内存的分配一般不超过1024M
3、深度递归算法会导致内存出问题,因为方法信息都在栈中,所以一个可以用-Xss增加栈空间,另一个最好去优化你的算法
4、加载了大量的jar包或者同时维持几个项目将消耗你的非堆内存,在这种情况下-XX:MaxPermSize 去增加你的非堆内存
5、强引用导致垃圾收集器无法回收内存。可能会出现jsp重编译,工程重新加载,这将消耗大量时间,只到非堆内存得到清理或者内存溢出。
我今天的tomcat抛出的就是非堆内存溢出,可能是因为新的版本又加了一些jar包的缘故。
处理过程
原文参考自站长网http://www.software8.co/wzjs/java/2575.html
第一次折腾:在tomcat\bin\catalina.bat 中 set JAVA_OPTS=%JAVA_OPT% -server -XX:PermSize=128m -XX:MaxPermSize=1024m
或者直接写 set JAVA_OPTS= -XX:PermSize=128m -XX:MaxPermSize=1024m
直接在tomcat启动,OK,工程正常启动
但是发现eclipse不认账
第二次折腾,打开 open launch configuration
点击Arguments选项卡
VM arguments 中添加
-Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=1024
OK,解决完毕
相关推荐
### MyEclipse-Tomcat JDK 内存溢出问题及解决方案 #### 一、问题概述 在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,...
标题中的“关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论”涉及了两个关键的IT概念:Tomcat服务器的字符编码问题和Java虚拟机(JVM)内存管理的问题。让我们逐一深入探讨这两个主题。 首先,我们来...
总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。
### Tomcat内存溢出总结 在生产环境中,Tomcat服务器如果配置不当,很容易出现内存溢出问题。这类问题不仅会影响应用程序的稳定运行,还可能导致服务不可用。本文将基于日常经验及查阅的相关资料,对几种常见的内存...
### Tomcat与Eclipse配置内存溢出解决方案 #### 背景介绍 在进行Web应用程序开发过程中,尤其是在使用Tomcat服务器结合Eclipse或MyEclipse等集成开发环境(IDE)时,开发者可能会遇到一个常见的问题——内存溢出。...
JVM 的垃圾回收机制主要是为了释放内存中无用的对象,避免内存溢出错误。垃圾回收机制可以分为两种情况: * 当应用程序线程空闲时,JVM 会调用垃圾回收机制。 * 当 Java 内存堆不足时,JVM 也会调用垃圾回收机制。 ...
本文将围绕“Tomcat内存溢出”这一主题,结合提供的描述与部分内容,深入探讨该问题的原因、表现形式以及具体的解决方案。 #### 二、Tomcat内存溢出概述 Tomcat服务器在运行过程中如果出现`java.lang....
解决Tomcat内存溢出问题的关键在于优化JVM的内存配置。以下是几个关键步骤: 1. **调整JVM启动参数**:你可以通过设置JVM的启动参数 `-Xms` 和 `-Xmx` 来控制Java进程的初始堆大小和最大堆大小。例如,可以将它们...
在使用 Tomcat 进行 Web 应用部署时,可能会遇到内存不足的问题,尤其是在启动大型应用或者应用中存在大量缓存数据的情况下,很容易导致 Java 虚拟机(JVM)内存溢出错误。本文将详细介绍如何调整 Tomcat 的内存配置...
Java虚拟机(JVM)内存管理是Java应用性能优化的关键部分,特别是在运行像Tomcat这样的Java应用服务器时...通过以上策略,可以显著减少Tomcat或其他Java应用服务器发生内存溢出的可能性,从而提高服务的稳定性和性能。
本文将详细探讨这两种内存溢出的原因、解决方案以及如何进行JVM内存优化。 #### PermGen space内存溢出 `PermGen space`全称为Permanent Generation space,它用于存储JVM的类元数据信息,如类定义、常量池等。当...
当分配给Tomcat的内存不足或配置不当,特别是在处理大量请求时,可能会出现内存溢出错误,从而影响Tomcat的正常启动。 ### 二、解决方案 #### 2.1 检查并更新Tomcat版本 首先,确认你的Tomcat版本是否与Eclipse...
### Eclipse启动Tomcat内存泄漏解决方案 #### 一、问题背景 在使用Eclipse集成开发环境(IDE)启动Tomcat服务器时,可能会遇到内存泄漏的问题。这种情况不仅会导致应用程序运行缓慢,严重时甚至会使得Tomcat服务器...
以下是一些常见的Tomcat错误及其解决方案: 1. **无法启动Tomcat** - 错误描述:启动时出现“找不到主类”或“java.lang.ClassNotFoundException”。 - 原因分析:通常是由于`CLASSPATH`环境变量未正确设置,或者...
本文将介绍在Linux和Windows系统环境下针对Tomcat服务器的几种实用内存溢出解决方案,并特别关注不同启动方式下的配置差异。 #### Tomcat内存配置详解 **1. Linux环境配置** - 在`catalina.sh`文件顶部添加以下...
本文将详细介绍如何在myEclipse6.5环境下配置并集成Tomcat7,以及在配置过程中可能遇到的一些常见问题及其解决方案。 #### 二、环境需求 - **操作系统**:Windows/Linux/MacOS(以Windows为例) - **JDK版本**:...
当这两个区域的可用内存不足以支撑当前的应用负载时,就会发生内存溢出错误。 #### 二、PermGen 空间溢出详解 ##### 2.1 PermGen 概念解析 PermGen 全称为 Permanent Generation space,是 JVM 的一部分,用于存储...