从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
2012-03-29 20:04
381 查看
Sun 提供的 爪哇虚拟机(JVM)提供了运行时参数“-client”和“-server”。前者 -client 有很快的启动速度,同时内存和线程管理方式利于图形界面控件的调度。后边的 -server 的内存和线程管理方式对于运行JavaEE 的相关类库以及类似模式的程序支持很强大。同时,-client 比 -server 能有更快的加载速度,经过各种环境实地测试,-client 启动时间能够在 -server 的 50% 以下,也就是启动快了一倍以上。可能就是因此,Tomcat 给出的执行脚本,没有提供方便的途径调整此参数。所有程序都是用
-client 方式启动爪哇虚拟机的。
我们使用 Tomcat 自然是要运行服务器程序。所以经过解读 Tomcat 执行脚本,我在此提供改造方式,使 Tomcat 能够基于 -server 方式的爪哇虚拟机启动。我用 Tomcat7.0.22 的执行脚本为例介绍改造方式。
下面是 catalina.sh 中的一段。大家可以通过查找 tomcat-juli.jar 来定位到这段代码的位置。对于 Tomcat7.0.22 来说,本段代码开始于 195 行。
我是 Shane Loo Li ,其中我增加的那行内容“ JAVA_OPTS=$JAVA_OPTS" -server" ”,就是用来以 -server 方式启动爪哇虚拟机的修改。JAVA_OPTS 是此执行脚本为运行爪哇虚拟机准备的参数变量。最终会追加在启动 Tomcat 的命令后边。添加的位置不宜大幅度调整。从逻辑上来说,这段代码上边是逐一调整各种运行命令行参数。再往下就是执行过程控制的代码了。
对于 catalina.bat (Windows使用),含义与上边一样。不过 Windows 的 cmd壳语法与 bash 不同,修改位置也只是大概一致。对于 Tomcat7.0.22 ,此段代码开始于 168 行。
通过这样的修改,再次通过执行脚本“startup.sh”或“startup.bat”启动 Tomcat 的时候,就能够以 -server 方式启动爪哇虚拟机了。
-client 方式启动爪哇虚拟机的。
我们使用 Tomcat 自然是要运行服务器程序。所以经过解读 Tomcat 执行脚本,我在此提供改造方式,使 Tomcat 能够基于 -server 方式的爪哇虚拟机启动。我用 Tomcat7.0.22 的执行脚本为例介绍改造方式。
下面是 catalina.sh 中的一段。大家可以通过查找 tomcat-juli.jar 来定位到这段代码的位置。对于 Tomcat7.0.22 来说,本段代码开始于 195 行。
# Add tomcat-juli.jar to classpath # tomcat-juli.jar can be over-ridden per instance if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar else CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar fi # Added by Shane Loo Li at 2012-3-29 Thursday. Use server java virtual machine to run Tomcat JAVA_OPTS=$JAVA_OPTS" -server" # Bugzilla 37848: When no TTY is available, don't output to console have_tty=0 if [ "`tty`" != "not a tty" ]; then have_tty=1 fi # For Cygwin, switch paths to Windows format before running java if $cygwin; then JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"` JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"` CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"` CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"` CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"` CLASSPATH=`cygpath --path --windows "$CLASSPATH"` JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"` fi
我是 Shane Loo Li ,其中我增加的那行内容“ JAVA_OPTS=$JAVA_OPTS" -server" ”,就是用来以 -server 方式启动爪哇虚拟机的修改。JAVA_OPTS 是此执行脚本为运行爪哇虚拟机准备的参数变量。最终会追加在启动 Tomcat 的命令后边。添加的位置不宜大幅度调整。从逻辑上来说,这段代码上边是逐一调整各种运行命令行参数。再往下就是执行过程控制的代码了。
对于 catalina.bat (Windows使用),含义与上边一样。不过 Windows 的 cmd壳语法与 bash 不同,修改位置也只是大概一致。对于 Tomcat7.0.22 ,此段代码开始于 168 行。
rem Add tomcat-juli.jar to classpath rem tomcat-juli.jar can be over-ridden per instance if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathDone :juliClasspathHome set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar" :juliClasspathDone rem Added by Shane Loo Li at 2012-1-16 Monday. Use server java virtual machine to run Tomcat set JAVA_OPTS=%JAVA_OPTS% -server if not "%LOGGING_CONFIG%" == "" goto noJuliConfig set LOGGING_CONFIG=-Dnop if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" :noJuliConfig set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%rem 是 cmd壳语法中的注释关键字,相当于bash里边的“#”,C系列里边的“//”,Oracle里边的“--”。
通过这样的修改,再次通过执行脚本“startup.sh”或“startup.bat”启动 Tomcat 的时候,就能够以 -server 方式启动爪哇虚拟机了。
相关文章推荐
- 从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
- 从 Java 虚拟机(JVM)层提高 Tomcat 执行效率
- tomcat免重启随意更改java代码 提高开发效率
- 让Andriod虚拟机执行效率提高10倍的方法!
- 如何优化JAVA代码及提高执行效率
- 正确认识java JVM与c的执行效率
- java内功 ---- jvm虚拟机原理总结,侧重于虚拟机类加载执行系统
- tomcat免重启随意更改java代码 提高开发效率
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
- 提高开发效率之tomcat免重启(随意更改java代码)
- JAVA文件编译执行与虚拟机(JVM)介绍(转)
- 为何多线程就能提高Java程序的执行效率
- 如何优化JAVA代码及提高执行效率
- Java利用多线程执行SQL减少执行时间提高效率
- 优化Tomcat(运行模式、JVM、线程数),提高运行效率
- 【java基础】.class文件由虚拟机的解释器解释为机器码,这个机器码是给JVM执行的机器码,还是类似于.exe给操作系统执行的机器码
- tomcat免重启随意更改java代码 提高开发效率(未测试)
- 如何优化JAVA代码及提高执行效率
- 提高java代码执行效率
- 如何优化JAVA代码及提高执行效率