搜尋
首頁Javajava教程基於JVM 調優的技巧總結分析

這篇是技巧性的文章,如果要找關於GC或調整內純的文章,請看我其他幾篇文章。因為是JVM 調優總結,所以廢話少說。從各方面一共收集到以下幾個方法:
1.升級 JVM 版本。如果能使用64-bit,使用64-bit JVM。    
基本上沒什麼好解釋的,很簡單將JVM升級到最新的版本。如果你還是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升級。因為JVM從1.4- >1.5->1.6可不是僅僅的版本號升級,或是僅僅往裡面加了一堆新的語言特性,這麼簡單。而是真正在JVM做了重大的改進,每次版本升級,都有龐大的效能升級。尤其SUN認知到java是知己的全部的時候(誇張點,但連股票號碼都改成JAVA了,呵呵)。如果你常常逛SUN 的JVM論壇,你會發現其實JVM上的毛病是這麼多。如果你因為各種原因,而不能升級到1.6,那你可以升級到該版本的最新版。
2.選擇一個正確的GC(Gargage Collection)。
由於當JAVA程序GC的時候,會停下當前程序。尤其Full GC的時候,會停留很久。一般對於GUI程式來說,是很難接受的(想想Eclipse暫停的時候)。 JAVA5 以後,開始自備了好幾種GC,你可以選擇一個適合你的種類。有以下四種Serial Collector,Parallel collector,Concurrent Collector,Train Collector(廢棄)。後面幾種時候使用並行收集,所以理論上有效率更高(要求你有超過2CUP,但現在多核心開始普及了,呵呵)。提示:更改GC 種類以後要適當挺高JVM的記憶體量。
3.正確設定記憶體大小。對JVM堆內的各個區域(young,old,perm)正確設定大小。
這個是最困難的調整,因為這個調整會直接影響GC的效率。而且由於各個程式的類型不用,所以沒有一個通用的資料。除了幾個常用規則以外,需要使用工具(jstat,jvmstat,jconsole等等)仔細調整。下面會提到幾個常用的準則。通常使用幾個參數調整-Xms -Xmx-XX:MaxPermSize。
3.1 調高-XX:NewRatio(NewSize/MaxNewSize)的值,會減少young gc的次數,但會增加old gc的時間。
3.2 增加普通GC的方法(減小Full GC)。擴大young區域的大小(最大40%),並過大Survivor的區域。讓更多的object留在young gen。
4.減小類別的使用量,注意類別的load和unload,減少JSP頁數。
類別其實也是對象,會直接分配perm區域裡,即使Full GC也會很少收集。 JSP也會被分配到perm區域裡,效果同理。如果perm過大,超過XX:MaxPermSize值,會發生 OutOfMemoryError: PermGen space異常。解決方法是提高-XX:MaxPermSize值。
5.避免使用-Xnoclassgc  
6.如果是RMI程序,要注意調整RMI DGC的時間。
以下是幾個寫程式時,應該注意的地方。也可減小GC,提升JVM性能。
1.不要使用System.gc()方法。
因為它會產生Full GC。
2.盡可能少分配大的臨時物件(生命週期短的)
可能會直接分配到old區域裡,old區域只有Full GC的時候會收集。
3.避免使用finalize()方法。
finalize()會增加GC的負擔,使用java.lang.ref取代。

更多基於JVM 調優的技巧總結分析相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
說明JVM如何充當Java代碼和基礎操作系統之間的中介。說明JVM如何充當Java代碼和基礎操作系統之間的中介。Apr 29, 2025 am 12:23 AM

JVM的工作原理是將Java代碼轉換為機器碼並管理資源。 1)類加載:加載.class文件到內存。 2)運行時數據區:管理內存區域。 3)執行引擎:解釋或編譯執行字節碼。 4)本地方法接口:通過JNI與操作系統交互。

解釋Java虛擬機(JVM)在Java平台獨立性中的作用。解釋Java虛擬機(JVM)在Java平台獨立性中的作用。Apr 29, 2025 am 12:21 AM

JVM使Java實現跨平台運行。 1)JVM加載、驗證和執行字節碼。 2)JVM的工作包括類加載、字節碼驗證、解釋執行和內存管理。 3)JVM支持高級功能如動態類加載和反射。

您將採取哪些步驟來確保Java應用程序在不同的操作系統上正確運行?您將採取哪些步驟來確保Java應用程序在不同的操作系統上正確運行?Apr 29, 2025 am 12:11 AM

Java應用可通過以下步驟在不同操作系統上運行:1)使用File或Paths類處理文件路徑;2)通過System.getenv()設置和獲取環境變量;3)利用Maven或Gradle管理依賴並測試。 Java的跨平台能力依賴於JVM的抽象層,但仍需手動處理某些操作系統特定的功能。

Java是否需要特定於平台的配置或調整區域?Java是否需要特定於平台的配置或調整區域?Apr 29, 2025 am 12:11 AM

Java在不同平台上需要進行特定配置和調優。 1)調整JVM參數,如-Xms和-Xmx設置堆大小。 2)選擇合適的垃圾回收策略,如ParallelGC或G1GC。 3)配置Native庫以適應不同平台,這些措施能讓Java應用在各種環境中發揮最佳性能。

哪些工具或庫可以幫助您解決Java開發中特定於平台的挑戰?哪些工具或庫可以幫助您解決Java開發中特定於平台的挑戰?Apr 29, 2025 am 12:01 AM

Osgi,Apachecommonslang,JNA和JvMoptionsareeForhandlingForhandlingPlatform-specificchallengesinjava.1)osgimanagesdeppedendendencenciesandisolatescomponents.2)apachecommonslangprovidesitorityfunctions.3)

JVM如何在不同平台上管理垃圾收集?JVM如何在不同平台上管理垃圾收集?Apr 28, 2025 am 12:23 AM

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

為什麼Java代碼可以在不同的操作系統上運行,而無需修改?為什麼Java代碼可以在不同的操作系統上運行,而無需修改?Apr 28, 2025 am 12:14 AM

Java代碼可以在不同操作系統上無需修改即可運行,這是因為Java的“一次編寫,到處運行”哲學,由Java虛擬機(JVM)實現。 JVM作為編譯後的Java字節碼與操作系統之間的中介,將字節碼翻譯成特定機器指令,確保程序在任何安裝了JVM的平台上都能獨立運行。

描述編譯和執行Java程序的過程,突出平台獨立性。描述編譯和執行Java程序的過程,突出平台獨立性。Apr 28, 2025 am 12:08 AM

Java程序的編譯和執行通過字節碼和JVM實現平台獨立性。 1)編寫Java源碼並編譯成字節碼。 2)使用JVM在任何平台上執行字節碼,確保代碼的跨平台運行。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)