Search code examples
javaapachejvmexecutabletomcat6

Increase memory size of Apache Tomcat Windows Service for a Java application created by an executable file


We have a legacy Java web application which we deploy to a Windows Server 2012 machine using an executable file and need to increase its memory pool size, since we get a lot of Out of memory exceptions.

It creates its own folders on Program Files including tomcat bin folder and a Windows service named "Apache Tomcat servicename" which is basically Tomcat version 6 but when I try to edit its Java options through tomcat6w.exe it says that this service is not installed on the system.

Is there a way to change the tomcat service being used by the application to a tomcat service installed from http://tomcat.apache.org/

Or maybe edit the service.bat (or any other file?) when creating the executable to hardcode the memory pool size there?

There is a line in service.bat like below:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256

Solution

  • The solution was to edit the Tomcat RAM usage through Registry by running regedit, browsing to:

     HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ApacheSoftwareFoundation >
       Procrun 2.0 > apache-tomcat > Parameters > Java
    

    and editing following values:

    JvmMs  REG_DWORD   0x00000800 (2048)
    JvmMx  REG_DWORD   0x00001000 (4096)
    

    The above applies when Tomcat is installed as a Windows Service and through a custom executable file and there is no access to its configuration through the tomcatxw.exe manager.