第05篇. Tomcat和JDK的內存配置


   

  

站在人群,我毫不起眼;活在世上,我不玩心眼!

沒有那么遠大的目標,但是也不要把我當成傻子!

   

                                                              --胖先生

   

   

放在前面要說的話:
JVM內存分配設置的參數有四個

-Xmx Java Heap最大值,默認值為物理內存的1/4

-Xms Java Heap初始值,Server端JVM最好將-Xms和-Xmx設為相同值,開發測試機JVM可以保留默認值;

-Xmn Java Heap Young區大小,不熟悉最好保留默認值;

-Xss 每個線程的Stack大小,不熟悉最好保留默認值;

-XX:PermSize:設定內存的永久保存區域;

-XX:MaxPermSize:設定最大內存的永久保存區域;

-XX:PermSize:設定內存的永久保存區域;

-XX:NewSize:設置JVM堆的'新生代'的默認大小;

-XX:MaxNewSize:設置JVM堆的'新生代'的最大大小;

參考: http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

  • Eclipse中設置JDK的內存方式

    為什么要設置JDK的內存呢?

    方式一:有可能的情況是Tomcat的內存溢出了,我需要設置如下的參數[關於下面的設置,需要根據你電腦的內存地址來設置]

-Xms512M -Xmx1024M -XX:PermSize=512m -XX:MaxPermSize=1024m

JDK的內存設置操作過程如下

  

效果如下:

但是我發現,啟動時間別配置之前慢了一些

方式二:增加JDK的內存的方法,直接在jdk下面的optional java vm arguments; 設置參數

  

   

  • 當你感覺你的Eclipse 啟動數據比較慢的時候,可以設置如下的屬性

    如果使用eclipse的話,那么在解壓的根目錄中找到eclipse.ini

    如果使用sts的話,那么在根目錄中找到STS.ini

-vmargs

-Xms128M

-Xmx512M

-XX:PermSize=64M

-XX:MaxPermSize=128M

:這里的所有的JVM的參數是有設定規則的,補充內容中含有

  • 增加Tomcat 的內存方式

    tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。

  • linux下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:

    SET JAVA_OPTS=-Xms512m -Xmx1024m

  • windows下,在tomcat_home}/bin/catalina.bat的前面,增加如下設置:

    SET JAVA_OPTS=-Xms512m -Xmx1024m

    :表示初始化內存為512MB,可以使用的最大內存為1024MB

  • 對Tomcat的優化操作[來源自網絡]

    (1) 在bin/catalina.bat文件中加入下面參數,對JVM進行優化,至於這一大駝參數的作用及說明,
    請查看文檔: http://www.mzone.cc/article/321.html

JAVA_OPTS="-server -showversion -Xms1000M -Xmx1000M -XX:PermSize=256m -XX:MaxPermSize=256m"

JAVA_OPTS="$JAVA_OPTS -d64 -XX:CICompilerCount=8 -XX:+UseCompressedOops"

JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90"

JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=256m -XX:-UseAdaptiveSizePolicy"

JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai -XX:-DontCompileHugeMethods"

JAVA_OPTS="$JAVA_OPTS -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking"

JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled "

JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=256m -XX:+UseFastAccessorMethods"

JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

JAVA_OPTS="$JAVA_OPTS -XX:+UseGCOverheadLimit -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchStyle=1"

JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=200"

上述這樣的配置,基本上可以達到:

  • 系統響應時間增快
  • JVM回收速度增快同時又不影響系統的響應率
  • JVM內存最大化利用
  • 線程阻塞情況最小化

-Xms=-Xmx=服務器內存*70%
如部署tomcat,jboss在同一台服務器 -Xms=-Xmx=服務器內存*80%*1/4

   

(2) Tomcat連接參數的優化,主要是針對吞吐量做優化:

修改conf/server.xml文件,把原來

<Connector port="8080" protocol="HTTP/1.1" />

修改內容如下:

<Connector port="8080" protocol="HTTP/1.1"

URIEncoding="UTF-8"

minSpareThreads="25"

maxSpareThreads="75"

enableLookups="false"

disableUploadTimeout="true"

connectionTimeout="20000"

acceptCount="300"

maxThreads="300"

maxProcessors="1000"

minProcessors="5"

useURIValidationHack="false"

compression="on"

compressionMinSize="2048"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

redirectPort="8443"/>

一段補充說明:

搜索【<Executor name="tomcatThreadPool"】,開啟並調整為

<Executor

name="tomcatThreadPool"

namePrefix="catalina-exec-"

maxThreads="1000"

maxIdleTime="60000"

minSpareThreads="20"/>

搜索【port="8080"】,調整為

<Connector

port="8080"

executor=" tomcatThreadPool" //開啟線程池

protocol="org.apache.coyote.http11. Http11AprProtocol" //我們沒有安裝: 開啟Apr協議,需要安裝Apr支持 maxHttpHeaderSize="8192"

maxThreads="1000"

processorCache="1000"

acceptCount="1000"

minSpareThreads="100"

acceptorThreadCount="8"

URIEncoding="UTF-8"

enableLookups="false"

redirectPort="8443" //關閉反向查詢

connectionTimeout="120000"

keepAliveTimeout="120000"

maxKeepAliveRequests="65535"

disableUploadTimeout="true"

compression="on"

compressionMinSize="4096" //開啟靜態文件壓縮

noCompressionUserAgents="gozilla, traviata" //開啟靜態文件壓縮

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,appli cation/x-javascript " //開啟靜態文件壓縮

/>

   

   

可以通過java/jdk/bin下的java visualVM查看eclipse的內存大小和tomcat的內存大小,主要看堆,PermGen兩個大小,如圖:

   

胖先生的微信

感覺該文章對你有所幫助,請點擊下方的
推薦↓↓↓↓↓↓↓↓↓↓
您的支持是我最大的動力



支付寶包掃一掃





謝謝兩位,小偉的支持

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM