JVM配置


JVM配置說明:

  注:基於java應用的JVM配置

  JVM:

      

      備注:全局數據區,目的為了節省內存空間,避免所有new的對象中共同屬性都開辟內存空間

 

   因為堆和棧是動態分配內存空間的,所有配置JVM就是基於堆棧內存空間的分配。

 

   配置JVM的位置:

    Linux:在tomcat下的bin/catalina.sh文件中配置。

      1、vim catalina.sh

      2、在大致106行的位置添加如下內容:(因為106行左右都是配置信息,所有將配置信息同一放到該處)

        "JAVA_OPTS"="-server  -Xmx500m  -Xms500m  -Xmn200m  -XX:MaxPermSize=256m  -XX:PermSize=256m  -XX:SurvivorRatio=6"

    說明:

      -Xmx500m    表示整個堆最大的內存  官方推薦是物理內存的1/4

      -Xms500m    表示堆初始化的內存   官方推薦是物理內存的1/64

    注:

      1、堆內存分配時,根據啟動服務器之后,系統剩余的內存來分配。(總內存  -  系統啟動占用內存)

      2、JVM內存是從物理內存借用的,tomcat啟動成功,即表示JVM從物理內存分配也成功。

 

        -Xmn200m    表示新生代內存  推薦分配整個堆的3/8

        新生代分三個區:

          eden區、s0交換區、s1交換區(這兩個交換區總有一個是空的,采用的是復制算法)    

            即:-Xmn  =  eden + s0 + s1    (三個內存相加等於新生代的內存)

             新生代三個區的內存分配:

          通過-XX:SurvivorRatio參數來指定eden區和交換區的內存占比。

          例如:-Xmn200m  -XX:SurvivorRatio=6     那么eden區占新生代的內存的6份  即 120m ,交換區占新生代的內存的4份  即80m(分配到每個交換區就是s0 占40m,s1 占40m)

          默認的eden區和交換區的占比為8,即-XX:SurvivorRatio=8

 

        老年代的內存大小:

        堆最大內存  -   新生代內存  =  老年代內存   (所有只需要配置新生代內存即可)

    注:比較好的堆內存配置方式,將堆最大內存和初始化內存配置成一樣的!

      原因:

        避免當超出初始化配置的內存后,向物理內存中申請內存。

        當申請的時候:

          1、物理內存此時不夠,代碼產生的數據不能存入到JVM,程序報錯。

          2、物理內存此時夠,從申請內存,到拿到內存,然后將數據存儲到JVM,都會有效率影響。

        -XX:PermSize=256         表示棧初始化內存    官方推薦是物理內存的1/64

          -XX:MaxPermSize=256     表示最大占內存        官方推薦是物理內存的1/4  

    注:比較好的棧內存配置方式,將棧最大內存和初始化內存配置成一樣的!

      原因:

        避免當超出初始化配置的內存后,向物理內存中申請內存。

        當申請的時候:

          1、物理內存此時不夠,對象引用就不能存放到棧中,程序報錯。

          2、物理內存此時夠,從申請內存,到拿到內存,然后將引用存儲到棧中,影響效率。

    注:棧中一般存放的都是對象堆中的地址引用,所有占用內存相對比較小,所有節省內存的情況下,可以只給棧內存分配256m或者128m。

 

  堆內存的分配情況查看:

      1、通過上述方式配置JVM。

      2、啟動tomcat。

      3、通過jps 或者ps -ef  | grep  java   獲取java進程的id ---->pid

      4、通過jmap  -heap   pid  查看堆內存分配情況,如圖:

        

 

  

 JVM參數說明:

 

並發收集器相關參數:

 

CMS相關參數:

 

 輔助參數:

 


免責聲明!

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



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