標籤:blog http io ar 使用 java sp 檔案 on
最近被問到了關於Tomcat時區設定方法,還沒碰到類似的問題,網上說是記錄日誌和定時任務時可能會出現,目前還未發現,先記錄下來。
原文地址:http://blog.csdn.net/x_yp/article/details/6234327,下面為原文:
今天在項目中碰到了一個tomcat時間跟系統時間不一致的問題,上網找到瞭解決方法,參見網址:http://evanmin.javaeye.com/blog/849844
一,在catalina.bat中
配置如下:
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=GMT+08 -Xms256m -Xmx800m
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="%CATALINA_BASE%/conf/logging.properties"
-Xms256m -Xmx800m(初始化記憶體大小為256m,可以使用的最大記憶體為800m),
-Duser.timezone=GMT+08 //設定為北京時間
這樣設定後,時間不一致問題解決,但是當把Tomcat放到Window服務中,作為服務啟動時,問題有出現了。上網終於找了了原因,參見網址:http://www.simpleframework.net/bbs/1443/2121.html
windows中大家都知道,JAVA程式啟動時都會JVM都會分配一個初始記憶體和最大記憶體給這個應用程式。這個初始記憶體和最大記憶體在一定程度都會影響程式的效能。比如說在應用程式用到最大記憶體的時候,JVM是要先去做記憶體回收的動作,釋放被佔用的一些記憶體。
所以想調整Tomcat的啟動時初始記憶體和最大記憶體就需要向JVM聲明,一般的JAVA程式在運行都可以通過中-Xms -Xmx來調整應用程式的初始記憶體和最大記憶體:
如:java -Xms64m -Xmx128m a.jar.
tomcat的啟動程式是封裝過的,不能直接使用java -X..... tomcat.*來改變記憶體的設定。在Tomcat在改變這個設定
有兩種方法:
1. 適合用%tomcat_home%/bin中的startup.bat指令碼啟動,需要在環境變數中加上CATALINA_OPTS這個屬性 。
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms是最小的,mx是最大,64m, 512m分別是指記憶體的初始和最大容量.
因 為:用startup.bat啟動tomcat伺服器,會調用catalina.bat檔案,在Catalian.bat檔案的166行“rem Execute Java with the applicable properties ”下面會載入系統設定的相關屬性。
其中就有%CATALINA_OPTS%這一項。這樣tomcat在啟動時就會將記憶體設定為指定的值。
2. 適合將tomcat作為系統服務啟動,這時候上面設定CATALINA_OPTS 屬性的方法就不適用了,因為作為系統服務的話,系統啟動時調用的是 %tomcat_home%/bin/tomcat5w.exe,他讀取註冊表中的值,而不是catalina.bat的設定,因此需要修改註冊表:
解決辦法:
修改註冊表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
加入 -Xms300m -Xmx350m
重起tomcat服務,設定生效。
同樣我在註冊表中加入-Duser.timezone=GMT+08 ,就可解決出現的問題。
Tomcat時區設定方法[轉]