堆大小設定
jvm 中最大堆大小有三方面限制:相關作業系統的資料模型(32-bt還是64-bit)限制;系統的可用虛擬記憶體限制;系統的可用物理記憶體限制。32位系統下,一般限制在1.5g~2g;64為作業系統對記憶體無限制。我在windows server 2003 系統,3.5g物理記憶體,jdk5.0下測試,最大可設定為1478m。
典型設定:
**器選擇
jvm給了三種選擇:序列收集器、並行收集器、併發收集器,但是序列收集器只適用於小資料量的情況,所以這裡的選擇主要針對並行收集器和併發收集器。預設情況下,jdk5.0以前都是使用序列收集器,如果想使用其他收集器需要在啟動時加入相應引數。jdk5.0以後,jvm會根據當前系統配置進行判斷。吞吐量優先的並行收集器
如上文所述,並行收集器主要以到達一定的吞吐量為目標,適用於科學技術和後台處理等。
典型配置:
響應時間優先的併發收集器
如上文所述,併發收集器主要是保證系統的響應時間,減少垃圾收集時的停頓時間。適用於應用伺服器、電信領域等。
典型配置:
輔助資訊
jvm提供了大量命令列引數,列印資訊,供除錯使用。主要有以下一些:
常見配置彙總堆設定
收集器設定
垃圾**統計資訊
並行收集器設定
併發收集器設定
四、調優總結
年輕代大小選擇
年老代大小選擇減少年輕代和年老代花費的時間,一般會提高應用的效率
吞吐量優先的應用:一般吞吐量優先的應用都有乙個很大的年輕代和乙個較小的年老代。原因是,這樣可以盡可能**掉大部分短期物件,減少中期的物件,而年老代盡存放長期存活物件。
較小堆引起的碎片問題
因為年老代的併發收集器使用標記、清除演算法,所以不會對堆進行壓縮。當收集器**時,他會把相鄰的空間進行合併,這樣可以分配給較大的物件。但是,當堆空間較小時,執行一段時間以後,就會出現「碎片」,如果併發收集器找不到足夠的空間,那麼併發收集器將會停止,然後使用傳統的標記、清除方式進行**。如果出現「碎片」,可能需要進行如下配置:
JVM相關問題
1.記憶體模型以及分割槽,需要詳細到每個區放什麼。2.堆裡面的分割槽 eden,survival from to,老年代,各自的特點。3.物件建立方法,物件的記憶體分配,物件的訪問定位。4.gc的兩種判定方法 引用計數與引用鏈。5.gc的三種收集方法 標記清除 標記整理 複製演算法的原理與特點,分別...
JVM相關知識
jvm即 j a virtual machine j a 虛擬機器 jvm直接與作業系統進行互動 不 會直接與伺服器硬體進行互動。如圖 1 j a檔案經過j ac編譯之後變成 class 位元組碼檔案 2 位元組碼檔案被classloader類載入器 搬運到jvm虛擬機器中 3 虛擬機器當中主要有五...
JVM引數配置
xmsn 指定jvm堆的初始大小,預設為物理記憶體的1 64,最小為1m,可以指定單位k m,如不指定預設為 位元組 xmxn 指定jvm堆的最大值,預設為物理記憶體的1 4或1g,最小為2m,單位與 xms一致。xssn 設定單個執行緒棧的大小,預設為512k xincgc 開啟增量gc 預設為關...