linux与windows下tomcat的java内存设置
Linux下修改JVM內存大小:
要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在這一行的前面加入參數,具體如下# vi TOMCAT_HOME/bin/catalina.sh(默認文件內容)
| 1 | export?JAVA_OPTS="-server?-Xms800m?-Xmx800m?-XX:PermSize=256m?-XX:MaxPermSize=512m?-XX:MaxNewSize=512m" |
| 1 | export?JAVA_OPTS="-server?-Xms512m?-Xmx1024m?-Xss256k?-XX:PermSize=128m?-XX:MaxNewSize=256m?-XX:MaxPermSize=256m" |
以下是自己設置的另外增加一個setenv.sh文件來設置tomcat內存,給文件加上執行權限
| 1 2 3 4 5 6 7 | #vi?/opt/app/tomcat6/bin/setenv.sh? export?JAVA_OPTS="-server?-Xms512m?-Xmx1024m?-XX:MaxNewSize=512m?-XX:PermSize=128m??-XX:MaxPermSize=256m?-XX:SurvivorRatio=14?-XX:+UseParallelOldGC" 或直接修改tomcat的配置文件 #vi?TOMCAT_HOME/bin/catalina.sh JAVA_OPTS="-server?-Xms512m?-Xmx1024m?-XX:MaxNewSize=512m?-XX:PermSize=128m??-XX:MaxPermSize=256m?-XX:SurvivorRatio=14?-XX:+UseParallelOldGC" 或 JAVA_OPTS="-Xms512m?-Xmx2048m?-Xss1024K?-XX:PermSize=512m?-XX:MaxPermSize=512m" |
jvm參數說明:
-server ? ? ? ? ? ? ? ?一定要作為第一個參數,啟用JDK的server版本,在多個CPU時性能佳?
-Xms ? ? ? ? ? ? ? ? ? ?啟動應用時,JVM 堆空間的初始大小值(java Heap初始大小), 默認是物理內存的1/64。
-Xmx? ? ? ? ? ? ? ? ? ? 應用運行中,JVM 堆空間的極限值(?java heap最大值)。為了不消耗擴大JVM 堆控件分配的開銷,將此參數和-Xms 這個兩個值設為相等,考慮到需要開線程,建議將此值設置為物理內存的80%,不可超過物理內存。
-Xmn? ? ? ? ? ? ? ? ? ? 此參數硬性規定堆空間的新生代空間大小,推薦設為堆空間大小的1/4(java heap最小值,一般設置為Xmx的3、4分之一)。
-XX:PermSize ? ? ? ? ? ?應用服務器啟動時,永久存儲區的初始內存大(設定內存的永久保存區初始大小,缺省值為64M)。
-XX:MaxPermSize? ? ? ? 應用運行中,永久存儲區的極限值。為了不消耗擴大JVM 永久存儲區分配的開銷,將此參數和-XX:PermSize這個兩個值設為相等。堆空間相關參數參數名參數說明(設定內存的永久保存區最大大小,缺省值為64M)。
-XX:SurvivorRatio=2 ? ?生還者池的大小,默認是2。如果垃圾回收變成了瓶頸,您可以嘗試定制生成池設置
-XX:NewSize ? ? ? ? ? ?新生成的池的初始大小。 缺省值為2M。
-XX:MaxNewSize ? ? ? ? ?新生成的池的最大大小。 缺省值為32M。
+XX:AggressiveHeap ? ? ?讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。?
-Xss ? ? ? ? ? ? ? ? ? ?每個線程的Stack大小
-verbose:gc ? ? ? ? ? ?現實垃圾收集信息
-Xloggc:gc.log ? ? ? ? ?指定垃圾收集日志文件
-XX:+UseParNewGC ? ? ? ?縮短minor收集的時間
-XX:+UseConcMarkSweepGC 縮短major收集的時間
-XX:userParNewGC ? ? ? ?可用來設置并行收集(多CPU)
-XX:ParallelGCThreads ?可用來增加并行度(多CPU)
-XX:UseParallelGC ? ? ?設置后可以使用并行清除收集器(多CPU)
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對年老代并行收集。
上面所列的JVM 參數關系到系統的性能,而其中-XX:PermSize,-XX:MaxPermSize,-Xms,-Xmx 和-Xmn 這5 個參數更是直接關系到系統的性能,系統是否會出現內存溢出。
-XX:PermSize 和-XX:MaxPermSize 分別設置應用服務器啟動時,永久存儲區的初始大小和極限大小;在生成環境中強烈推薦將這個兩個值設置為相同的值,以避免分配永久存儲區的開銷,具體的值可取系統“疲勞測試”獲取到的永久存儲區的極限值;如果不進行設置-XX:MaxPermSize 默認值為64M,一般來說系統的類定義文件大小都會超過這個默認值。
-Xms 和-Xmx 分別是服務器啟動時,堆空間的初始大小和極限值。-Xms的默認值是物理內存的1/64 但小于1G,-Xmx 的默認值是物理內存的1/4 但小于1G.在生產環境中這些默認值是肯定不能滿足我們的需要的。也就是你的服務器有8g 的內存,不對JVM 參數進行設置優化,應用服務器啟動時還是按默認值來分配和約束JVM 對內存資源的使用,不會充分的利用所有的內存資源。
?
結論:“永久存儲區溢出(java.lang.OutOfMemoryError:Java Permanent Space)”乃是永久存儲區設置太小,不能滿足系統需要的大小,此時只需要調整-XX:PermSize 和-XX:MaxPermSize 這兩個參數即可。“JVM 堆空間溢出(java.lang.OutOfMemoryError: Java heap space)”錯誤是JVM 堆空間不足,此時只需要調整-Xms 和-Xmx 這兩個參數即可。
windows下修改JVM內存大小:
情況一:解壓版本的Tomcat, 要通過startup.bat啟動tomcat才能加載配置
要添加在tomcat 的bin 下catalina.bat來添加內存在
rem ----- Execute The Requested Command ---------------------------------------下
增加下面命令:
| 1 2 3 4 5 6 7 | set?JAVA_OPTS=-server?-Xms512m?-Xmx600m?-XX:PermSize=128m?-XX:MaxNewSize=256m?-XX:MaxPermSize=256m?-XX:SurvivorRatio=14?-XX:+UseParalledlOldGC 或 set?JAVA_OPTS=-server?-Xms512m?-Xmx1024m?-XX:PermSize=128m?-XX:MaxNewSize=256m?-XX:MaxPermSize=256m? 或 set?JAVA_OPTS=%JAVA_OPTS%?-server?-XX:PermSize=128M?-XX:MaxPermSize=512m 或 set?JAVA_OPTS="%JAVA_OPTS%?-server?-Xms800m?-Xmx3072m?-XX:PermSize=512m?-XX:MaxNewSize=256m?-XX:MaxPermSize=1024m" |
另翻注(詳細解釋):
常見JVM參數配置匯總
堆設置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:設置年輕代大小
-XX:NewRatio=n:設置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:
Survivor=3:2,一個Survivor區占整個年輕代的1/5
-XX:MaxPermSize=n:設置持久代大小
收集器設置
-XX:+UseSerialGC:設置串行收集器
-XX:+UseParallelGC:設置并行收集器
-XX:+UseParalledlOldGC:設置并行年老代收集器
-XX:+UseConcMarkSweepGC:設置并發收集器
垃圾回收統計信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器設置
-XX:ParallelGCThreads=n:設置并行收集器收集時使用的CPU數。并行收集線程數。
-XX:MaxGCPauseMillis=n:設置并行收集最大暫停時間
-XX:GCTimeRatio=n:設置垃圾回收時間占程序運行時間的百分比。公式為1/(1+n)
并發收集器設置
-XX:+CMSIncrementalMode:設置為增量模式。適用于單CPU情況。
-XX:ParallelGCThreads=n:設置并發收集器年輕代收集方式為并行收集時,使用的CPU數。并行收集線程數。
本文轉自ling118 51CTO博客,原文鏈接:http://blog.51cto.com/meiling/1655007,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的linux与windows下tomcat的java内存设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【实验手册】使用Visual Studi
- 下一篇: 在Linux上自动调整屏幕亮度保护眼睛