a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 339|回复: 0

[专业语言] Java认证辅导之关于Tomcat内存设置方法

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导之关于Tomcat内存设置方法) {3 D# D" t5 V3 Q) z$ [3 t
windows中大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的动作,释放被占用的一些内存。2 V9 G  b* a: m  x; s
所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中-Xms -Xmx来调整应用程序的初始内存和最大内存:
" R% J2 S" W$ G4 |- T" h如:java -Xms64m -Xmx128m a.jar.
" c* }1 c/ Q2 E' k$ x- Etomcat的启动程序是包装过的,不能直接使用java -X.。..。 tomcat.*来改变内存的设置。在Tomcat在改变这个设置5 k1 F7 ]& Y1 N& [: \/ t1 I. E
有两种方法:& b% B# u1 S/ g
1. 适合用%tomcat_home%\bin中的startup.bat脚本启动,需要在环境变量中加上CATALINA_OPTS这个属性 。$ b$ [: E9 S, c6 @" {1 _
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;8 k; {. g. D* L7 j7 R; D& @0 U
ms是最小的,mx是最大,64m, 512m分别是指内存的初始和最大容量。
- l9 f4 H( @. D' V3 \9 k. j$ r因为:用startup.bat启动tomcat服务器,会调用catalina.bat文件,在Catalian.bat文件的166行“rem Execute Java with the applicable properties ”下面会加载系统设置的相关属性。
# K/ c+ H9 i, e- z- K* i其中就有%CATALINA_OPTS%这一项。这样tomcat在启动时就会将内存设置为指定的值。
, p+ W/ g/ ~+ G  w& s  ]2. 适合将tomcat作为系统服务启动,这时候上面设置CATALINA_OPTS 属性的方法就不适用了,因为作为系统服务的话,系统启动时调用的是 %tomcat_home%\bin\tomcat5w.exe,他读取注册表中的值,而不是catalina.bat的设置,因此需要修改注册表:2 |3 x6 x: I$ g4 X
解决办法:( r3 z9 A. b  I2 z+ l
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
3 I+ H$ u" s% [8 z! G原值为
9 w- a: \$ S) _* N) f-Dcatalina.home=“C:\ApacheGroup\Tomcat 5.0”: ]: ^6 I) [, R- W6 W8 q1 O3 s0 Q( z
-Djava.endorsed.dirs=“C:\ApacheGroup\Tomcat 5.0\common\endorsed”
8 q7 A( @  a/ G( E4 p, Y, x+ ]6 B4 V5 I6 v8 [' k5 {, G
-Xrs6 Z. T; S* d* H' v
加入 -Xms300m -Xmx350m- d" L# L: A3 k2 ^$ x; f
重起tomcat服务,设置生效. N7 I9 y  Z2 Z' ^
最后,测试tomcat大小,jsp页面9 Z, t7 |/ K" f) q
《%1 B2 q, l6 N& Z3 o
Runtime lRuntime = Runtime.getRuntime();; a2 ~+ K& e8 Q# V
out.println(“*** BEGIN MEMORY STATISTICS ***《br/》”);
: L/ `# ?( H; p) T( Hout.println(“Free Memory: ”+lRuntime.freeMemory()+“《br/》”);: m3 p+ T! r* d
out.println(“Max Memory: ”+lRuntime.maxMemory()+“《br/》”);
* n0 x3 m" y1 i$ Kout.println(“Total Memory: ”+lRuntime.totalMemory()+“《br/》”);
" M, Z) f* x9 w# o% x" uout.println(“Available Processors : ”+lRuntime.availableProcessors()+“《br/》”);6 z0 D7 d' |0 S) z
out.println(“*** END MEMORY STATISTICS ***”);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-26 08:29 , Processed in 0.319578 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表