tomcat 运行的时候 tomcat内存溢出怎么办

当前访客身份:游客 [
当前位置:
tomcat运行时经常内存溢出
共有3个答案
<span class="a_vote_num" id="a_vote_num_
&1.eclipse占用内存设置
org.eclipse.epp.package.jee.product
--launcher.defaultAction
--launcher.XXMaxPermSize
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
--launcher.defaultAction
-Dosgi.requiredJavaVersion=1.6
2.tomcat startup启动 内存设置
在tomcat\bin\catalina.bat第一行设置
set JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true
3.eclipse new server启动 内存设置
双击tomcat Server--& Open lanch configuration --&Arguments--&在VM arguments回车加上
-Xms1024m -Xmx1024m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m
4.eclipse tomcat插件启动 内存设置
&&Window--&Prerferences--&Tomcat--& JVM Settings--&Append to JVM Parameters--&Add
添加-Xms1024m -Xmx1024m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m
<span class="a_vote_num" id="a_vote_num_
再次强调,修改catalina.sh/.bat是错误的做法,不要被误导人的资料给带偏了。具体怎么做?看脚本开头的注释
<span class="a_vote_num" id="a_vote_num_
将catalina脚本中增加的内容移到setenv.bat(或者setenv.sh)中去,如果该文件不存在则新建一个
尽量避免修改原执行文件
更多开发者职位上
有什么技术问题吗?
jijicce...的其它问题
类似的话题Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,轻微时,会使系统性能急剧下降,严重时,将导致系统无法运行,影响系统的稳定性。当内存不够用时,常见的问题就是报tomcat内存益处错误,从儿导致客户端包500错误的,如下:解决方法主要是加大TOMCAT可利用内存,并在程序当中加大内存使用。因此根据应用的需求,有必要调整JVM使用内存的大小。现在将手工修改tomcat内存的方法及注意事项列出,希望能对新人有所帮助。
  Tomcat提供了两种安装模式,即免安装(*.zip)和安装(*.exe)方式。针对不同的安装方式下修改tomcat内存大小的方法几注意问题(windows环境):
  免安装(*.zip)修改方法:
  修改<CATALINA_HOME>/bin/catalina.bat文件的内容,即在里面增加一行代码:
  set JAVA_OPTS=-Xms512m -Xmx512m //表示初始化最小可用内存和最大可用内存都是512MB(修改相应&#20540;即可)
  如在catalina.bat的
    rem ----- Execute The Requested Command
    echo Using CATALINA_BASE: %CATALINA_BASE%
    echo Using CATALINA_HOME: %CATALINA_HOME%
    echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
    echo Using JAVA_HOME: %JAVA_HOME%
  这一栏改为
    rem ----- Execute The Requested Command
    set JAVA_OPTS=-Xms512m -Xmx512m
    echo Using CATALINA_BASE: %CATALINA_BASE%
    echo Using CATALINA_HOME: %CATALINA_HOME%
    echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
    echo Using JAVA_HOME: %JAVA_HOME%
  就可以将JAVA虚拟机分配内存 508.0625MB的!
  安装(*.exe)
  1、关闭 现在正在运行的tomcat
  2.1 [注意]
    [高版本tomcat配置方法]
   如果是tomcat 5.5 或者是 5.0.28 之后的版本,在 Java 选项卡中,下方,会有
   Inital memory Pool:&&
   Maximum memory Pool:
   Thread stack size:
   三个输入框,在这里即可不用做上面的操作,直接配置内存大小,只需要设置
   Inital memory Pool 为 256
   Maximum memory Pool 为 512
   点击确定后,重启tomcat 生效
   如果您是低版本的tomcat,发现没有上面那几个录入框,请看下面的操作步骤
    [低版本tomcat配置方法]
   在开始菜单中,找到“Apache Tomcat 5.0”,并选择“Configure Tomcat”,在弹出的对话框窗口中,切换到 Jav   a VM 选项卡,并在 Java Options 输入框的最前面输入
   -Xms256m -Xmx512m
   即输入框中的内容会像下面的代码(与自己的环境有所区别)
   -Xms256m -Xmx512m
   -Dcatalina.home=&C:/tomcat5&
   -Djava.endorsed.dirs=&C:/tomcat5/common/endorsed&
   -Xrs
  设置完后,点击“确定”,并重启tomcat即可。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:202552次
积分:2643
积分:2643
排名:第7509名
原创:76篇
转载:60篇
评论:41条
(1)(9)(1)(5)(1)(3)(4)(4)(2)(2)(7)(10)(5)(1)(4)(3)(2)(5)(5)(1)(2)(3)(3)(4)(2)(2)(4)(2)(5)(1)(1)(1)(3)(10)(4)(6)(1)(1)(1)(3)(2)(6)(2)最近在学习Quartz写了一个小例子,部署到Tomcat下能够正常启动和执行任务调度,
但是在关闭Tomcat的时候就会出现出错
Tomcat日志文件错误内容为
1:13:26 org.apache.catalina.core.StandardService stopInternal
信息: Stopping service Catalina
1:13:26 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application appears to have started a thread named [QuartzScheduler_Worker-1] but has failed to stop it. This is very likely to create a memory leak.
1:13:26 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application appears to have started a thread named [QuartzScheduler_Worker-2] but has failed to stop it. This is very likely to create a memory leak.
在网上找了好久,在Web.xml下添加&&&&&&
&&&&&&& &init-param&
&&&&&&&&&&& &param-name&start-scheduler-on-load&/param-name&
&&&&&&&&&&& &param-value&true&/param-value&
&&&&&&& &/init-param&
也不行,
刚开始怀疑这段配置没有执行,但是在日志文件发现这么一段话
1:13:26 org.apache.catalina.core.ApplicationContext log
信息: QuartzInitializer: Quartz Scheduler successful shutdown.
似乎成功关闭了Scheduler也不能解决问题。
有没有人也遇到过这样的问题啊?希望得到帮助
在这个例子里面使用了QuartzInitializerServlet 实现Web容器加载时启动调度
贴出主要代码
web.xml:
&&
&servlet&&&&&&
&servlet-name&QuartzInitializer&/servlet-name&&&&&&
&display-name&Quartz Initializer Servlet&/display-name&&&&&&
&servlet-class&org.quartz.ee.servlet.QuartzInitializerServlet&/servlet-class&&&&&&
&load-on-startup&1&/load-on-startup&&&&&&
&init-param&&&&&&
&param-name&config-file&/param-name&&&&&&
&param-value&/quartz.properties&/param-value&&&&&&
&/init-param&&&&&&
&init-param&&&&&&
&param-name&shutdown-on-unload&/param-name&&&&&&
&param-value&true&/param-value&&&&&&
&&&&&&& &/init-param&&&&&&
&&&&&&& &init-param&
&&&&&&&&&&& &param-name&start-scheduler-on-load&/param-name&
&&&&&&&&&&& &param-value&true&/param-value&
&&&&&&& &/init-param&
&/servlet&&
quartz.properties:
&&& org.quartz.scheduler.instanceName = QuartzScheduler&&
&&& org.quartz.scheduler.instanceId = AUTO
&&& org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool&&
&&& org.quartz.threadPool.threadCount = 2&
&&& org.quartz.threadPool.threadPriority = 5&
&&& org.quartz.jobStore.misfireThreshold = 60000&
&&& org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
&&& org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
&&& org.quartz.plugin.jobInitializer.fileNames=updateWeb.xml&&&&&&
&&& org.quartz.plugin.jobInitializer.overWriteExistingJobs = false&&
&&& org.quartz.plugin.jobInitializer.failOnFileNotFound = true&&
&&& org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin&&
&&& org.quartz.plugin.shutdownhook.cleanShutdown =true&
updateWeb.xml:&
&quartz&&&
&&& &job&&&
&&&&&&& &job-detail&&&
&&&&&&&&&&& &name&PortalInfoJob&/name&&&
&&&&&&&&&&& &group&PortalInfo&/group&&&
&&&&&&&&&&& &job-class&com.job.myJob&/job-class&&&
&&&&&&& &/job-detail&&&
&&&&&&& &trigger&&&
&&&&&&&&&&& &cron&&&
&&&&&&&&&&&&&&& &name&PORTALINFO&/name&&&
&&&&&&&&&&&&&&& &job-name&PortalInfoJob&/job-name&&&
&&&&&&&&&&&&&&& &job-group&PortalInfo&/job-group&&&
&&&&&&&&&&&&&&& &cron-expression&0 0 1 * * ?&/cron-expression&&&
&&&&&&&&&&& &/cron&&&
&&&&&&& &/trigger&&&
&&& &/job&&&
&/quartz&&
Job接口的实现类在execute方法里打印一句话。
我知道Spring集成的Quartz可以通过配置文件做到,但是写一个任务调度难道还要搭建Spring框架么?
希望可以得到帮助,谢谢
问题补充:bibofly 写道看上去没什么错呀。
就是tomcat关闭的时候,总报线程没关闭,可能会导致内存溢出
问题补充:bibofly 写道看上去没什么错呀。
是的,这个小程序可以正常的跑起来,正常的执行的调度,就是在关闭Tomcat的时候会出现问题,不知道什么原因
问题补充:bibofly 写道会不会是因为tomcat自身的的配置问题,可能和quartz没有关系呢?配置一下conf下面的tomcat配置文件看看,如xmx和perm之类的。
不是,虽然Tomcat玩的也不是很转,但是我试了tomcat 5 6 7 解压版
和tomcat& win32安装版
只有win32安装版可以正常关闭,貌似是版本的问题,我使用的是Quartz 1.6.6
问题补充:bibofly 写道会不会是因为tomcat自身的的配置问题,可能和quartz没有关系呢?配置一下conf下面的tomcat配置文件看看,如xmx和perm之类的。
好像1.6和1.7都不能很好的关闭线程这个问题
问题补充:bibofly 写道会不会是因为tomcat自身的的配置问题,可能和quartz没有关系呢?配置一下conf下面的tomcat配置文件看看,如xmx和perm之类的。
1.8也不行&&
无语了,Quartz玩不转了
http://blog.csdn.net/huilixiang/article/details/8730520
看看这个链接,我之前也是这个问题
会不会是因为tomcat自身的的配置问题,可能和quartz没有关系呢?配置一下conf下面的tomcat配置文件看看,如xmx和perm之类的。
看上去没什么错呀。
已解决问题
未解决问题楼主好文,受益不少,尤其是第三条,以前从没关注过。&&&&
&re: tomcat内存溢出总结
不错 好东西&&&&
&re: tomcat内存溢出总结[未登录]
好文,前两种问题都遇到过&&&&
&re: tomcat内存溢出总结[未登录]
不错,好东西,不过我只是遇过第一种情况&&&&
&re: tomcat内存溢出总结
不错,受益匪浅&&&&
&re: tomcat内存溢出总结
总结的很好,对以后处理错误有清晰的认识了&&&&
&re: tomcat内存溢出总结
博主好人!&&&&
&re: tomcat内存溢出总结
对于ibm的jvm没有第二种情况,而且oom的发生也可能是内存碎片(jdk1.4)造成的。&&&&
&re: tomcat内存溢出总结[未登录]
&#64;Diablo.Wu
恩,是的,个人认为PermGen space的设计,也是sun jdk一个缺陷,没有预见到动态class有如此广泛的应用。
&&&&
&re: tomcat内存溢出总结
mx和ms不要设置成一样,最好的值为 512m-1536m。这个值是听一个IBM的工程师所说的经验值。mx和ms设置成一样不好,其理由是:最大和最小一样了,很多时候会产生很小的内存碎片,jvm会压缩内存,就像整理内存一样,这样最后整理后内存占用大小会是ms的值,如果最大和最小一样了,整理后内存占用为mx,这样,再去申请较大块内存时,就不能申请。。这种情况没有遇到过,仅供参考。&&&&
&re: tomcat内存溢出总结
这里写错了吧 应该是-XX:MaxPermSize 好几处这一个一般是加大-XX:PermSize
-XX:MaxPermSize 来解决问题。
-XX:PermSize 永久保存区域初始大小
-XX:PermSize 永久保存区域初始最大值
这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m
-XX:PermSize=128M -XX:PermSize=256M
有一点需要注意:java -Xmx***M
version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的 和 比如系统支持最大的jvm堆大小事1.5G,那
-XX:PermSize=768M 是无法运行的。
&re: tomcat内存溢出总结
好啊 很实用
&re: tomcat内存溢出总结[未登录]
永久性内存溢出困扰被人几个月啦

我要回帖

更多关于 tomcat内存溢出配置 的文章

 

随机推荐