精华帖 (0) :: 良好帖 (2) :: 新手帖 (18) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-26
期待JDK7推出的G1收集器.
|
|
返回顶楼 | |
发表时间:2011-08-27
oom是很正常的事情,tomcat默认最大内存是128,稍大一点的系统很容易就超了。
另外,catalina.bat一般是不改的。 如果是运行环境,自己写一个脚本好了。 如果是开发环境,运行参数就可以设置JVM的参数,eclipse在Run Dialog里面。 顺便分享个脚本给大家,不要照抄哦,启动就占1G: export JAVA_HOME=/app/jdk1.6.0_24/ export CATALINA_HOME=/app/tomcat-8080 export JAVA_OPTS=' -server -Xms1024m -Xmx1536m -XX:MaxNewSize=256m -XX:PermSize=128M -XX:MaxPermSize=256m -Djava.awt.headless=true ' case "$1" in start) echo "Starting Tomcat ... " $CATALINA_HOME/bin/startup.sh echo "Done." echo "" echo "-------------------------------------------------" date +" %T %a %D : Finished." echo "-------------------------------------------------" tail -f $CATALINA_HOME/logs/catalina.out ;; stop) echo "Stopping Tomcat ... " $CATALINA_HOME/bin/shutdown.sh echo "Done." echo "" echo "-------------------------------------------------" date +" %T %a %D : Finished." echo "-------------------------------------------------" ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac |
|
返回顶楼 | |
发表时间:2011-08-27
你这种情况只是说请求的内存太多了,而配置的内存太小导致的内存溢出,如果因为自己的tomcat配置的内存太小,这种解决方法可以解决。但如果是由于自己程序产生的bug,那么再怎么调整启动内存也是没有用的。另外并不是说内存调的越大越好,要合理分配。
|
|
返回顶楼 | |
发表时间:2011-08-27
lnaigg 写道 oom是很正常的事情,tomcat默认最大内存是128,稍大一点的系统很容易就超了。
另外,catalina.bat一般是不改的。 如果是运行环境,自己写一个脚本好了。 如果是开发环境,运行参数就可以设置JVM的参数,eclipse在Run Dialog里面。 顺便分享个脚本给大家,不要照抄哦,启动就占1G: export JAVA_HOME=/app/jdk1.6.0_24/ export CATALINA_HOME=/app/tomcat-8080 export JAVA_OPTS=' -server -Xms1024m -Xmx1536m -XX:MaxNewSize=256m -XX:PermSize=128M -XX:MaxPermSize=256m -Djava.awt.headless=true ' case "$1" in start) echo "Starting Tomcat ... " $CATALINA_HOME/bin/startup.sh echo "Done." echo "" echo "-------------------------------------------------" date +" %T %a %D : Finished." echo "-------------------------------------------------" tail -f $CATALINA_HOME/logs/catalina.out ;; stop) echo "Stopping Tomcat ... " $CATALINA_HOME/bin/shutdown.sh echo "Done." echo "" echo "-------------------------------------------------" date +" %T %a %D : Finished." echo "-------------------------------------------------" ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac 不同意这个观点,tomcat的启动脚本只是给的一个默认值,是他们认为一般情况下可以的一种情况。这要看自己的项目的内存占用情况,如果需要调就一定调脚本,而不是在外面直接写一个壳,那样容易产生误解,配置错误。 |
|
返回顶楼 | |
发表时间:2011-08-27
解决了表面现象——严重猜测楼主的是32位系统难道还是使用的默认64M内存跑应用。
呵呵,我的机器自从使用64位系统未发现过此问题。 |
|
返回顶楼 | |
发表时间:2011-08-28
这个不是解决问题的直接方法。
outofmemory肯定是程序问题。 |
|
返回顶楼 | |
发表时间:2011-08-29
菜菜土人 写道 这个不是解决问题的直接方法。
outofmemory肯定是程序问题。 不一定。也要分情况,如果JVM永久存储区过小,应用可能都起不来就直接PG OOM鸟 |
|
返回顶楼 | |
发表时间:2011-08-29
Out Of Memory 有很多种。调整permsize只是调了其中一个参数。
|
|
返回顶楼 | |
发表时间:2011-09-09
我们是做XML相关产品的,在大文档的XML解析和处理的程序中会碰到out of memory的情况。第一种做法是加大内存。在32位的Windows操作系统上,最大能加到1.5G。但有时候还不够。那么我们第二种方法是用64位的操作系统。现在还没有测出来最大能加到多大内存。第三种方式就是要查看程序,看是否有优化的地方。如果还不能解决,只能够把大的文档拆成小文档,然后一个一个地处理了。这样内存要求少了。但是对程序开发的技巧要求高了。
|
|
返回顶楼 | |
发表时间:2011-09-11
大量数据的数据库,就尽量别用Hibernate了。那东西层次多,为了搭建对象模型,它需要很多内部的对象。
|
|
返回顶楼 | |