1. 榪愯宩ar鏂囦歡鍓嶏紝鎴戦渶瑕佽劇疆java鉶氭嫙鏈鴻櫄鎷熷唴瀛
璁劇疆JVM鍐呭瓨鐨勫弬鏁版湁鍥涗釜錛
-Xmx Java Heap鏈澶у礆紝榛樿ゅ間負鐗╃悊鍐呭瓨鐨1/4錛屾渶浣寵懼煎簲璇ヨ嗙墿鐞嗗唴瀛樺ぇ灝忓強璁$畻鏈哄唴鍏朵粬鍐呭瓨寮閿鑰屽畾錛
-Xms Java Heap鍒濆嬪礆紝Server絝疛VM鏈濂藉皢-Xms鍜-Xmx璁句負鐩稿悓鍊礆紝寮鍙戞祴璇曟満JVM鍙浠ヤ繚鐣欓粯璁ゅ礆紱
-Xmn Java Heap Young鍖哄ぇ灝忥紝涓嶇啛鎮夋渶濂戒繚鐣欓粯璁ゅ礆紱
-Xss 姣忎釜綰跨▼鐨凷tack澶у皬錛屼笉鐔熸倝鏈濂戒繚鐣欓粯璁ゅ礆紱
2. 濡備綍璁劇疆JVM鍐呭瓨鍒嗛厤錛
錛1錛夊綋鍦ㄥ懡浠ゆ彁紺虹︿笅鍚鍔ㄥ苟浣跨敤JVM鏃訛紙鍙瀵瑰綋鍓嶈繍琛岀殑綾籘est鐢熸晥錛夛細
java -Xmx128m -Xms64m -Xmn32m -Xss16m Test
錛2錛夊綋鍦ㄩ泦鎴愬紑鍙戠幆澧冧笅錛堝俥clipse錛夊惎鍔ㄥ苟浣跨敤JVM鏃訛細
a. 鍦╡clipse鏍圭洰褰曚笅鎵撳紑eclipse.ini錛岄粯璁ゅ唴瀹逛負錛堣繖閲岃劇疆鐨勬槸榪愯屽綋鍓嶅紑鍙戝伐鍏風殑JVM鍐呭瓨鍒嗛厤錛夛細
-vmargs
-Xms40m
-Xmx256m
-vmargs琛ㄧず浠ヤ笅涓鴻櫄鎷熸満璁劇疆鍙傛暟錛屽彲淇鏀瑰叾涓鐨勫弬鏁板礆紝涔熷彲娣誨姞-Xmn錛-Xss錛屽彟澶栵紝eclipse.ini鍐呰繕鍙浠ヨ劇疆闈炲爢鍐呭瓨錛屽傦細-XX:PermSize=56m錛-XX:MaxPermSize=128m銆
姝ゅ勮劇疆鐨勫弬鏁板煎彲浠ラ氳繃浠ヤ笅閰嶇疆鍦ㄥ紑鍙戝伐鍏風殑鐘舵佹爮鏄劇ず錛
鍦╡clipse鏍圭洰褰曚笅鍒涘緩鏂囦歡options錛屾枃浠跺唴瀹逛負錛歰rg.eclipse.ui/perf/showHeapStatus=true
淇鏀筫clipse鏍圭洰褰曚笅鐨別clipse.ini鏂囦歡錛屽湪寮澶村勬坊鍔犲備笅鍐呭癸細
-debug
options
-vm
javaw.exe
閲嶆柊鍚鍔╡clipse錛屽氨鍙浠ョ湅鍒頒笅鏂圭姸鎬佹潯澶氫簡JVM淇℃伅銆
2. 關於設置Java虛擬機(JVM)的內存問題
最近做畢設時 遇到了一點小問題 在解析dblp xml文件時(該文件很大 最新版本為 MB) 老是報錯
java lang OutOfMemoryError: Java heap space
最後通過查資料才知道 這是由於JVM堆內存不足造成的 JVM在啟動動的時候一般會設置JVM Heap的值
其初始空間(即 Xms)是物理內存的 / 最大空間( Xmx)不可超過物理內存 在JVM中如果 %的時間是用於GC 且可用的Heap size 不足 %的時候將拋出此異常信息 出現這種問題可以通過修改JVM heap大小解決
如
點擊(此處)折疊或打開
java Xms M Xmx M className
以上設置JVM初始化堆內存為 M 最大可用堆內存為 M
( )在命令行中設置的方法就如上面所述
( )在Eclipse中可以這樣設置
在eclipse的 Run >Run Configurations >Arguments下的VM Arguments中設置
Xms M Xmx M
另外可以使用 java X查看其它JVM參數情況
點擊(此處)折疊或打開
D:work>java X
Xmixed mixed mode execution (default)
Xint interpreted mode execution only
Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
Xnoclassgc disable class garbage collection
Xincgc enable incremental garbage collection
Xloggc:<file> log GC status to a file with time stamps
Xbatch disable background pilation
Xms<size> set initial Java heap size
Xmx<size> set maximum Java heap size
Xss<size> set java thread stack size
Xprof output cpu profiling data
Xfuture enable strictest checks anticipating future default
Xrs rece use of OS signals by Java/VM (see documentation)
Xcheck:jni perform additional checks for JNI functions
Xshare:off do not attempt to use shared class data
Xshare:auto use shared class data if possible (default)
Xshare:on require using shared class data otherwise fail
The X options are non standard and subject to change without notice
可以通過java lang Runtime的一些方法查看jvm的內存使用情況
點擊(此處)折疊或打開
System out println( Total Memory: + Runtime getRuntime() totalMemory() / ( * + MB )
System out println( Free Memory: + Runtime getRuntime() freeMemory() / ( * ) + MB )
System out println( Max Memory: + Runtime getRuntime() maxMemory() / ( * ) + MB )
maxMemory()這個方法返回的是java虛擬機(這個進程)能構從操作系統那裡挖到的最大的內存 以位元組為單位
totalMemory()這個方法返回的是java虛擬機現在已經從操作系統那裡挖過來的內存大小 也就是java虛擬機這個進程當時所佔用的所有內存
freeMemory為當前jvm中沒有使用的內存
附 jvm參數說明 (轉自)
server:一定要作為第一個參數 在多個CPU時性能佳
Xms java Heap初始大小 默認是物理內存的 /
Xmx java heap最大值 建議均設為物理內存的一半 不可超過物理內存
XX:PermSize:設定內存的永久保存區初始大小 預設值為 M (我用visualvm exe查看的)
XX:MaxPermSize:設定內存的永久保存區最大 大小 預設值為 M (我用visualvm exe查看的)
XX:SurvivorRatio= :生還者池的大小 默認是 如果垃圾回收變成了瓶頸 您可以嘗試定製生成池設置
XX:NewSize: 新生成的池的初始大小 預設值為 M
XX:MaxNewSize: 新生成的池的最大大小 預設值為 M
如果 JVM 的堆大小大於 GB 則應該使用值 XX:newSize= m XX:MaxNewSize= m XX:SurvivorRatio= 或者將堆的總大小的 % 到 % 分配給新生成的池 調大新對象區 減少Full GC次數
+XX:AggressiveHeap 會使得 Xms沒有意義 這個參數讓jvm忽略Xmx參數 瘋狂地吃完一個G物理內存 再吃盡一個G的swap
Xss 每個線程的Stack大小 Xss 這使得JBoss每增加一個線程(thread)就會立即消耗 M內存 而最佳值應該是 K 默認值好像是 k
verbose:gc 現實垃圾收集信息
Xloggc:gc log 指定垃圾收集日誌文件
Xmn young generation的heap大小 一般設置為Xmx的 分之一
XX:+UseParNewGC 縮短minor收集的時間
XX:+UseConcMarkSweepGC 縮短major收集的時間 此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適
XX:userParNewGC 可用來設置並行收集【多CPU】
XX:ParallelGCThreads 可用來增加並行度【多CPU】
lishixin/Article/program/Java/hx/201311/26103
3. 怎麼設置Tomcat的JVM虛擬機內存大小
方法/步驟
Tomcat作為應用伺服器,不能直接運行,需要相應的硬體和操作系統的支持,,需要java虛擬機環境。也就是說tomcat啟動的時候 ,JVM會分配一個初始內存以及最大內存給 tomcat,所以要提高tomcat的jvm內存,需要在啟動的時候,進行配置
找到tomcat在本地電腦中的安裝目錄,進入這個目錄,然後進入bin目錄中,在window環境下找到bin目錄中的catalina.bat,在linux環境下找到catalina.sh
右鍵編輯catalina.bat這個文件,找到JAVA_OPTS這個選項的位置,這個參數是java啟動的時候,需要的啟動參數
將這個參數設置為JAVA_OPTS='-Xms512m -Xmx1024m'表示初始化分配內存為512MB,可以使用的最大內存為1024MB。
也可以在操作系統的環境變數中對JAVA_OPTS進行設置,因為tomcat在啟動的時候,也會讀取操作系統中的環境變數的值,進行載入
如果是修改了操作系統的環境變數,需要重啟機器,再重啟tomcat,如果修改的是tomcat配置文件,需要將配置文件保存,然後重啟tomcat,設置就能生效了