當前位置:編程學習大全網 - 源碼下載 - 關於Java虛擬機內存的設置

關於Java虛擬機內存的設置

最近在做設計的時候遇到了壹個小問題。在解析dblp xml文件(文件的最新版本是MB)時,我總是報錯。

java lang OutOfMemoryError: Java堆空間

最後,通過檢查數據可知,這是由於JVM堆內存不足造成的。JVM通常在啟動時設置JVM堆的值。

初始空間(Xms)是物理內存/最大空間(Xmx)不能超過JVM中的物理內存。如果%的時間花在GC上,而可用堆的大小小於%,就會拋出這個異常消息。這個問題可以通過修改JVM堆大小來解決。

諸如

單擊(此處)折疊或打開。

java Xms M Xmx M className

JVM初始化堆內存設置為m以上,最大可用堆內存為m。

()命令行中設置的方法如上所述。

()您可以在Eclipse中進行設置。

在eclipse的運行>運行配置>中參數下vmArguments中的設置。

Xms M Xmx M

此外,您可以使用java X查看其他JVM參數。

單擊(此處)折疊或打開。

d:\ work & gt;java X

Xmixed混合模式執行(默認)

僅解釋模式執行

xbootclasspath:& lt;目錄和zip/jar文件用;& gt

為引導類和資源設置搜索路徑

xbootclasspath/a:& lt;目錄和zip/jar文件用;& gt

追加到引導類路徑的末尾

xbootclasspath/p:& lt;目錄和zip/jar文件用;& gt

在引導類路徑前添加前綴

Xnoclassgc禁用類垃圾收集

Xincgc啟用增量垃圾收集

xloggc:& lt;文件& gt將GC狀態記錄到帶有時間戳的文件中

Xbatch禁用後臺填充

Xms & ltsize & gt設置初始Java堆大小

Xmx & ltsize & gt設置最大Java堆大小

Xss & ltsize & gt設置java線程堆棧大小

Xprof輸出cpu分析數據

Xfuture啟用預測未來違約的最嚴格檢查

Xrs減少了Java/VM對OS信號的使用(參見文檔)

Xcheck:jni對jni函數執行額外的檢查

Xshare:off不要試圖使用共享類數據

Xshare:如果可能,自動使用共享類數據(默認)

Xshare:on要求使用共享類數據,否則會失敗

X選項是非標準的,如有更改,恕不另行通知

可以通過java lang Runtime的壹些方法來檢查jvm的內存使用情況。

單擊(此處)折疊或打開。

系統輸出println(總內存:+Runtime get Runtime()Total Memory()/(*+MB)

系統輸出println(可用內存:+Runtime get Runtime()Free Memory()/(*)+MB)

系統輸出println(最大內存:+Runtime get Runtime()maxMemory()/(*)+MB)

maxMemory()方法返回java虛擬機(這個進程)可以從操作系統中獲取的最大內存,以字節為單位。

totalMemory()的方法返回java虛擬機現在已經從操作系統挖來的內存大小,也就是當時java虛擬機占用的所有內存。

FreeMemory是當前jvm中未使用的內存。

附jvm參數描述(轉自)

服務器:壹定要把它作為第壹個參數,在多個CPU上取得好的性能。

默認情況下,Xms java堆的初始大小是/

Xmx java堆的最大值建議設置為物理內存的壹半,不能超過物理內存。

XX:PermSize:設置內存永久存儲區的初始大小。默認值是m(我用visualvm exe查過了)。

XX:MaxPermSize:設置內存永久存儲區的最大大小。默認值是m(我用visualvm exe查過了)。

XX:SurvivorRatio=?幸存者池的默認大小是,如果垃圾收集成為瓶頸,您可以嘗試自定義生成池設置。

XX:NewSize:新生成的池的初始大小的默認值是m。

XX:MaxNewSize:新生成的池的最大大小默認值為m。

如果JVM的堆大小大於GB,您應該使用值xx:new size = mxx:max new size = mxx:survivor ratio =或將總堆大小的%到%分配給新生成的池,以調整新的對象區域,從而減少完全GC次數。

+XX:AggressiveHeap會讓Xms失去意義。這個參數讓jvm忽略Xmx參數,瘋狂吃掉壹個G物理內存,然後壹個G交換。

每個線程的Xss棧大小Xss這使得JBoss每增加壹個線程就要立刻消耗M內存,而最佳值應該是K,默認值好像是K。

Verbose:gc實際垃圾收集信息

Xloggc:gc log指定垃圾收集日誌文件。

Xmn年輕壹代的堆大小壹般設置為Xmx的三分之壹。

XX:+UseParNewGC縮短了minor收集的時間。

XX:+UseConcMarkSweepGC縮短了專業的采集時間。當堆的大小很大並且major的收集時間很長時,這個選項更適合。

XX:userParNewGC可以用來設置多個CPU的並行集合。

Xx:並行可以用來增加並行度。多CPU。

Lishi Xinzhi/Article/program/Java/hx/201311/26103

  • 上一篇:如何快速成為數據分析師
  • 下一篇:通達字母板源代碼
  • copyright 2024編程學習大全網