簡體   English   中英

遷移到64位JVM的經驗

[英]Experience of moving to 64 bit JVM

我們公司計划遷移到64位JVM,以便遠離2 GB的最大堆大小限制。 Google給出了關於64位JVM性能的非常好的結果。 有沒有人嘗試過64位Java並分享你的經驗

簡而言之: 64位JVM將消耗更多內存用於對象引用和一些其他類型(通常不重要),每個線程消耗更多內存(通常在高容量站點上很重要)並使您擁有更大的堆(通常只有如果你有很多長壽命的物體很重要)

更長的答案/評論:

  • Java是32位設計的評論是誤導性的。 Java內存尋址是32位或64位,但VM規范確保大多數字段(例如int,long,double等)都是相同的。

  • 此外 - 與對象數量相關的GC調整注釋可能不相關,GC可以在具有大堆的JVM上快速(我已經使用高達15GB的堆,具有非常快的GC) - 這更多地取決於你如何使用世代收集器方案,以及您的對象使用模式。 雖然過去人們花費了大量的能量調整參數,但它依賴於工作負載,現代(Java 5+)JVM非常擅長自我調整 - 除非你有大量數據,否則你自己更有可能傷害自己具有強大的JVM調優功能。

  • 正如在x86架構中所提到的,64位EMT64或x64處理器還包括用於執行原子寫入或其他可能也會影響高性能應用程序的選項的新指令。

對我們來說很好。 為什么不簡單地嘗試設置它並在像jvisualvm這樣的分析器下運行你的負載測試套件?

如果你需要更大的堆,那么性能問題就沒有實際意義了,不是嗎? 或者你有水平縮放的計划?

我在64位應用程序中聽到的主要問題是完整的垃圾收集可能需要很長時間(因為它基於活動對象的數量)。 因此,您需要仔細調整GC參數以避免完整收集(我聽說過一個有關64 Gb堆的公司的軼事,並調整了他們的GC以便他們永遠不會使用完整的GC;他們只是關閉每周下來一次)。

除此之外,認識到Java是32位設計,所以你不可能看到一次64位移動數據會帶來巨大的性能提升。 而且你仍然只限於32位數組索引。

我們直接寫到64位,我看不出任何不良行為......

根據我的經驗,天真地采用32位JVM工作負載並將它們放在64位上會產生性能和空間。

但是,大多數主要的JVM供應商現在已經實現了一種基本上壓縮一些堆的好技術 - 它被稱為壓縮引用或64位JVM的壓縮oops,它們不是“大”(即:在4-30gb范圍內) 。

這會產生很大的不同,應該使32-> 64的過渡影響更小。

IBM JVM的參考: 鏈接文本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM