今天,依旧照往常一样.打开IDE, 启动tomcat, 等了大概3分钟左右, tomcat 还没启动完毕.起初也没觉得有什么奇怪的地方.
于是,又等了几分钟. tomcat还是一样. 似乎挂起在那里, 动也不动, 死机了一样..
重启之后, 结果依旧.. 于是, 换了个版本试了一下(原来的是5.5,换成6.0的),
但还是一样. 然后我通过startup.bat 启动, 这回可以了启动完毕了, 但我只访问了一个jsp页面(里面只写了些HTML代码),
内存溢出了,我在想, 是不是IDE坏了, 我卸了IDE, 又重装了一下.. 然后再叫同事把最新的代码给我,, 这次可以启动了,,
访问一个jsp页面不会内存溢出了, 但是我一提交一个请求, 又内存溢出了, 我在想是不是代码上的问题, 叫同事也运行一下,
但她的丝毫没有问题...
接着我试着加大tomcat 的虚拟内存,
但还是一样....
搞死我了...
请问哪位大侠有遇见过类似的问题,,
很急很急...
于是,又等了几分钟. tomcat还是一样. 似乎挂起在那里, 动也不动, 死机了一样..
重启之后, 结果依旧.. 于是, 换了个版本试了一下(原来的是5.5,换成6.0的),
但还是一样. 然后我通过startup.bat 启动, 这回可以了启动完毕了, 但我只访问了一个jsp页面(里面只写了些HTML代码),
内存溢出了,我在想, 是不是IDE坏了, 我卸了IDE, 又重装了一下.. 然后再叫同事把最新的代码给我,, 这次可以启动了,,
访问一个jsp页面不会内存溢出了, 但是我一提交一个请求, 又内存溢出了, 我在想是不是代码上的问题, 叫同事也运行一下,
但她的丝毫没有问题...
接着我试着加大tomcat 的虚拟内存,
但还是一样....
搞死我了...
请问哪位大侠有遇见过类似的问题,,
很急很急...
本以为可以解决,
但结果依旧.. 这次的结果是: 可以启动, 可以访问一个jsp页面, 但一提交请求到do上..
哎.... 内存溢出了....
真不知道该如何是好...
tomcat配置里 OPtional java VM arguments
-Xms256m -Xmx512m
现在的结果是:
换了几次新的tomcat,
加大tomcat内存,
重装所有的东西,
重装了系统..结果依旧............
应该有可能是系统的bug引起的。
我在自己的电脑(640M内存)上用tomcat6.0部署6个系统,还要运行一个oracle数据库。。
同时10个操作都没有出现内容溢出的问题。
就是可以启动, 但访问就内存溢出..
2. Tomcat启动后,内存还剩多少?
3. “但访问就内存溢出...”,访问是什么应用?溢出的现象可否描述一下?看了上面大家为你支的招,按照道理不应该在出现那种情况的,再说Tomcat启动的时候需要的内存并不是很大的。
你碰到的情况的确很古怪,难道是RPWT?
版本也换过重装也不行
但是在其他同事机器上就可以运行
你的tomcat 内存已经增大了还出现这个问题
我个人认为觉得是你系统的bug
看看这下面 按照这去处理一,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 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 解决方法: 手动设置Heap size
修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
Java代码
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m
view plaincopy to clipboardprint?
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 或修改catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 二,java.lang.OutOfMemoryError: PermGen space 原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 解决方法: 1. 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在 Java代码
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
view plaincopy to clipboardprint?
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m catalina.sh下为:
Java代码
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"
1、log4j输出级别改为ERROR2、Tomcat和ide是不是用的同一个JAVA_HOME3、是不是重复加载了applicationContetx.xml【所谓重复是指是否用ClassPath加载的xml,而你的xml文件比较大】
死在那个线程了
用一些工具可以将内存dump下来,然后通过一些工具可以分析这些dump文件,看看溢出时到底是哪个对象最多,然后看一下创建这个对象后相关的代码是不是没有释放资源.
Java dump,也叫做 Thread dump,是 JVM 故障诊断中最重要的转储文件之一。JVM 的许多问题都可以使用这个文件进行诊断,其中比较典型的包括线程阻塞,CPU 使用率过高,JVM Crash,堆内存不足,和类装载等问题。作为一款轻量级(与 Heap dump 和 System dump 相比)的转储文件,Java dump 的确是我们诊断 JVM 问题的首选.
相关文章见利用 Java dump 进行 JVM 故障诊断
欢迎深圳的JAVA程序员加入,共同探讨技术与工作、项目合作、共享信息、结交朋友
加入请输入验证信息:SZJP