這篇是技巧性的文章,如果要找關於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中文網!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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