JAVA—咖啡館

          ——?dú)g迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          Tomcat內(nèi)存設(shè)置方法

          windows中大家都知道,JAVA程序啟動時(shí)都會JVM都會分配一個(gè)初始內(nèi)存和最大內(nèi)存給這個(gè)應(yīng)用程序。這個(gè)初始內(nèi)存和最大內(nèi)存在一定程度都會影響程序的性能。比如說在應(yīng)用程序用到最大內(nèi)存的時(shí)候,JVM是要先去做垃圾回收的動作,釋放被占用的一些內(nèi)存。
             所以想調(diào)整Tomcat的啟動時(shí)初始內(nèi)存和最大內(nèi)存就需要向JVM聲明,一般的JAVA程序在運(yùn)行都可以通過中-Xms -Xmx來調(diào)整應(yīng)用程序的初始內(nèi)存和最大內(nèi)存:
          如:java -Xms64m -Xmx128m a.jar.
             tomcat的啟動程序是包裝過的,不能直接使用java -X..... tomcat.*來改變內(nèi)存的設(shè)置。在Tomcat在改變這個(gè)設(shè)置
          有兩種方法:
          1. 適合用%tomcat_home%\bin中的startup.bat腳本啟動,需要在環(huán)境變量中加上CATALINA_OPTS這個(gè)屬性 。
                 如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
                    ms是最小的,mx是最大,64m, 512m分別是指內(nèi)存的初始和最大容量.

          因?yàn)椋河胹tartup.bat啟動tomcat服務(wù)器,會調(diào)用catalina.bat文件,在Catalian.bat文件的166行“rem Execute Java with the applicable properties ”下面會加載系統(tǒng)設(shè)置的相關(guān)屬性。

          其中就有%CATALINA_OPTS%這一項(xiàng)。這樣tomcat在啟動時(shí)就會將內(nèi)存設(shè)置為指定的值。

          2. 適合將tomcat作為系統(tǒng)服務(wù)啟動,這時(shí)候上面設(shè)置CATALINA_OPTS 屬性的方法就不適用了,因?yàn)樽鳛橄到y(tǒng)服務(wù)的話,系統(tǒng)啟動時(shí)調(diào)用的是 %tomcat_home%\bin\tomcat5w.exe,他讀取注冊表中的值,而不是catalina.bat的設(shè)置,因此需要修改注冊表:

          解決辦法:
          修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\Java\Options
          原值為
          -Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
          -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
          -Xrs

          加入 -Xms300m -Xmx350m
          重起tomcat服務(wù),設(shè)置生效


          最后,測試tomcat大小,jsp頁面
          <%
          Runtime lRuntime = Runtime.getRuntime();
          out.println("*** BEGIN MEMORY STATISTICS ***<br/>");
          out.println("Free Memory: "+lRuntime.freeMemory()+"<br/>");
          out.println("Max   Memory: "+lRuntime.maxMemory()+"<br/>");
          out.println("Total Memory: "+lRuntime.totalMemory()+"<br/>");
          out.println("Available Processors : "+lRuntime.availableProcessors()+"<br/>");
          out.println("*** END MEMORY STATISTICS ***");
          %>

          posted on 2011-01-11 16:57 rogerfan 閱讀(750) 評論(0)  編輯  收藏 所屬分類: 【Java知識】 、【開源技術(shù)】
          主站蜘蛛池模板: 吉木乃县| 梅州市| 肃北| 确山县| 新丰县| 闸北区| 阿拉善左旗| 寿光市| 黄大仙区| 平阳县| 湘阴县| 龙陵县| 鹤庆县| 石泉县| 乌恰县| 巴里| 都兰县| 神池县| 东安县| 宜春市| 芮城县| 大同市| 四川省| 鄄城县| 蒙城县| 武山县| 威海市| 武城县| 武宁县| 乡城县| 鄂托克前旗| 清河县| 民权县| 遵化市| 安义县| 洛宁县| 贵南县| 达尔| 青浦区| 辽阳县| 宁城县|