請問set JAVA_OPTS的各項引數是什麼意思?

weixin_34054866發表於2015-05-11

http://topic.csdn.net/u/20090910/10/20c6ba01-28ac-482e-94b2-bfce0a952f77.html

請問set JAVA_OPTS的各項引數是什麼意思? 

比如以下的: 

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=2 

希望從JVM的角度 去解釋 。

-Xms512m 堆的最小值 
-Xmx1024m 堆的最大值 
另外hotspot垃圾回收採用分代蒐集的方法,把堆分為三個部分,新域,舊域和永久域。Jvm生成的全部新物件放在新域中。一旦物件經歷了一定數量的垃圾收集迴圈後,便獲得使用期並進入舊域。在永久域中jvm則儲存class和method物件。就配置而言,永久域是一個獨立域而且不覺得是堆的一部分 
-XX:MaxPermSize=2設定永久域的最大值, 
-XX:PermSize=256M設定永久域的初始值(你的樣例顯然有問題)

------------------------

 

JAVA_OPTS

比如:

-Xms512m -Xmx512m -XX:MaxPermSize=512m -XX:+AggressiveHeap

http://www.blogjava.net/yanzhou/archive/2006/09/13/69384.aspx

-Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap

1. +XX:AggressiveHeap會使得 Xms 1220m沒有意義。這個引數讓jvm忽略Xmx引數,瘋狂地吃完一個G實體記憶體,再吃盡一個G的swap。
另外Xmx作為同意jvm使用的最大記憶體數量,不應該超過實體記憶體的90%。
而之所以使用了這個引數,是由於不加的話,JBoss會在執行一天左右的時間後迅速崩潰,上機課是,甚至出現過半個小時就崩潰的情況。
之所以要用這個引數,用swap支援server執行,是由於犯了以下的錯誤:
2. -Xss 15120k 
這使得JBoss每新增一個執行緒(thread)就會馬上消耗15M記憶體,而最佳值應該是128K,預設值好像是512k.
這就是JBoss剛啟動時,還有200Mb記憶體富餘,但會在一個小時內迅速用完,由於server的threads在迅速新增。前3天,每天都多吃80Mb左右的swap.在第四天開始穩定下來。今年春節在外度假,觀察到了這個現象,卻不理解其原因:server線上程到達100之後,一般不再新增新的執行緒,新新增的在用完之後,會被迅速destroy,??褂玫哪詿嬉不厥樟恕R虼耍?旁詿航諂詡洌?鄄斕椒?衿髟?1.25-2.10所使用的執行緒基本是1.21-1.23建立的,因此沒有再消耗新的記憶體。server持續執行時間,也因此大大超乎我5天的預期,到達了20天。

昨天所作的改動:
1.改動JAVA_OPTS,去掉+XX:AggressiveHeap,改動Xss。如今的JAVA_OPTS為:
-Xms 520m -Xmx 900m -Xss 128k
2.改動deploy/jbossweb-tomcat55.sar/service.xml
將maxThreads依據眼下的訪問量由預設的250降為75,並使用jboss 4預設未寫在標準service.xml裡面而jboss 3寫入了的2個引數: maxSparseThreads=55,minSparseThreads=25
3.改動了oracle-ds.xml將最大連線數有150降為50.
4.去掉了一些不用的服務。

相關文章