垃圾回收在應用程序性能中起著關鍵作用,因為它會由于不正確的調優(yōu)而影響不可預測性。如果頻繁發(fā)生GC事件,導致垃圾收集器忙于執(zhí)行GC操作,并導致應用程序服務器上的CPU使用率較高,則會導致應用程序處理不良。參加java培訓,可以幫助你更好地了解垃圾回收相關問題,提高代碼質量。
如果垃圾回收發(fā)生得太頻繁或占CPU的很大比例,則應增加Java堆大小設置,或在應用程序中查找不必要地分配內存的位置。
由于堆內存配置不足或應用程序中存在內存泄漏,可能會發(fā)生過多的垃圾回收,這需要在發(fā)布期間生成heapdump來進一步檢查。
為了獲得更好的系統性能,必須有很少的完整GC事件,GC暫停應該是最小的,并且用于垃圾回收的CPU百分比應該非常低。
建議你在開發(fā)環(huán)境中對應用程序進行負載測試,以確定最大堆內存使用量。你的生產堆大小應至少比測試的最大值高25%-30%,以便為開銷留出空間。在java培訓中,會有關于垃圾回收的處理方法和技巧的課程,學好這些技巧,有助于更好地進行開發(fā)項目,少出問題。
通用GC配置和參數
-Xms:設置堆的最小和初始大小(以字節(jié)為單位)
-Xmx:指定堆的最大大小(以字節(jié)為單位)
-Xmn:在分代收集器中為年輕一代(托兒所)設置堆的初始大小和最大大小(字節(jié))
-XX:PermSize:設置分配給永久生成的空間(以字節(jié)為單位),如果超出該空間,將觸發(fā)垃圾回收。此選項在JDK
8中被棄用,并被-XX:metaspaceSize選項取代。
對于服務器部署,-Xms和-Xmx通常設置為相同的值,以便堆大小是固定的并預先分配。
java語言顯著的特點就是引入了java回收機制,是c++程序員最頭疼的內存管理的問題迎刃而解,這樣一來,我們在開發(fā)的過程中就不必考慮內存管理。垃圾回收可以有效的防止內存泄露,有效的使用空閑的內存。想深入了解關于java垃圾回收的問題,可以報名參加java培訓,學習更多的內存管理技巧,寫出高質量和已與維護的代碼!