zoukankan      html  css  js  c++  java
  • [z]TOMCAT内存_JVM参数设置解决溢出

    TOMCAT内存溢出


    Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,轻微时,会使系统性能急剧下降,严重时,将导致系统无法运行,影响系统的稳定性。当内存不够用时,常见的问题就是报tomcat内存益处错误,从儿导致客户端包500错误的,如下:解决方法主要是加大TOMCAT可利用内存,并在程序当中加大内存使用。因此根据应用的需求,有必要调整JVM使用内存的大小。现在将手工修改tomcat内存的方法及注意事项列出,希望能对新人有所帮助。

    tomcat提供了两种安装模式,即免安装(*.zip)和安装(*.exe)方式。针对不同的安装方式下修改tomcat内存大小的方法几注意问题(windows环境):

    方式1:当选择安装方式时,可以在安装tomcat的过程进行设置tomcat初始化内存的大小。但是假如说在安装时没有选择,或者应用改变了,需要增加tomcat内存时怎么半呢?此时,我们就要手工修改tomcat的一些文件了。

    看了很多网上的资料,都是说修改<CATALINA_HOME>\bin\catalina.bat文件的内容,即在里面增加一行代码:

    set JAVA_OPTS=-Xms512m -Xmx512m //表示初始化最小可用内存和最大可用内存都是512MB(修改相应值即可)

    如在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的!

    但是很多人修改后,发现修改并没有起作用,即通过windows的服务启动tomcat时,实际的内存还是默认的,修改的设置并没有起作用;而通过<CATALINA_HOME>\bin\startup.bat 启动却是生效的。这是为什么呢?因为在安装过程中,JVM的初始化参数已经写在注册表中了,由于没有修改注册表中相关参数,所以以windows服务方式启动时,修改的并没有生效。而通过<CATALINA_HOME>\bin\startup.bat 启动直接是通过<CATALINA_HOME>\bin\catalina.bat文件中的配置的。你需要重新加载到系统服务中才生效,或者你手工在注册表中查找修改启动值,加载到服务中的时候参数已经配置好了,自己修改artup.bat不会改变注册表中的参数设置。

    解决方法:修改注册表中的参数,加入JVM初始化内存的参数:

    HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions

    值为

    -Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
    -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
    -Xrs

    如加入 -Xms512m -Xmx800m

    方式2:针对免安装的用户,也可以通过将tomcat注册为windows的一个服务的方式来实现:我们可以对service.bat文件做一些其他修改,使tomcat更加能满足我们各种不同需求时的要求

    1. 如果让tomcat编译jsp文件,就在PR_CLASSPATH中加入J2SDK的tools.jar

    修改前:

    set PR_CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar

    修改后:

    set PR_CLASSPATH=%JAVA_HOME%\lib\tools.jar; %CATALINA_HOME%\bin\bootstrap.jar

    2.要使用一个特定的JVM,就要修改jvm的参数;要使注册的windows服务的启动方式为自动,增加--Startup Automatic,这个是比较常用的;要用定制的server.xml配置文件并且传递多个参数给StartClass,要修改StartParams的值,各个值之间用分号分隔:

    修改前:

    "%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm auto
    --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap
    --StartParams start --StopParams stop

    修改后:

    "%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"
    --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap
    --StartParams "-config; %CUSTOM_SERVERXML_FILE%; -nonaming; start" --StopParams stop
    --Startup Automatic

    3. 指定最大和最小的内存限制,要增加jvm的初始参数

    修改前:

    "%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
    "-Dcatalina.base=%CATALINA_BASE%; -Dcatalina.home=%CATALINA_HOME%; -Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed"
    --StartMode jvm --StopMode jvm

    修改后:

    "%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
    "-Xms128M; -Xmx256M; -Dcatalina.base=%CATALINA_BASE%; -Dcatalina.home=%CATALINA_HOME%; -Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed"
    --StartMode jvm --StopMode jvm

    4.有时注册windows服务成功后,但是启动服务时显示“发生服务特定错误: 0.”就是因为jvm没有指定,修改Jvm auto为Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"后重新注册windows服务就可以启动了。

  • 相关阅读:
    MFC Windows 程序设计>WinMain 简单Windows程序 命令行编译
    AT3949 [AGC022D] Shopping 题解
    CF643D Bearish Fanpages 题解
    CF643C Levels and Regions 题解
    CF241E Flights 题解
    CF671C Ultimate Weirdness of an Array 题解
    CF1592F Alice and Recoloring 题解
    GYM 102452E 题解
    CF494C Helping People 题解
    P5556 圣剑护符
  • 原文地址:https://www.cnblogs.com/jjj250/p/2628646.html
Copyright © 2011-2022 走看看