日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

32和64位jvm_我应该使用32位还是64位JVM?

發(fā)布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 32和64位jvm_我应该使用32位还是64位JVM? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

32和64位jvm

這是我在企業(yè)軟件開發(fā)生涯中多次遇到的問題。 我不得不每隔一段時間就提供有關(guān)配置特定新環(huán)境的建議。
而且,很多時候,手頭的問題與“我應(yīng)該使用32位或64位JVM”有關(guān)。 老實(shí)說,一開始我只是擲硬幣。 而不是給出合理的答案。 (對不起,兄弟!)但是到目前為止,我已經(jīng)對此收集了更多的見解,并希望與您分享。
第一站–越多越好。 對? 所以–如果64> 32,那么這很容易 答:如果可能,請始終選擇64位? 好吧,抱著你的馬。 64位體系結(jié)構(gòu)的缺點(diǎn)是相同的數(shù)據(jù)結(jié)構(gòu)會消耗更多的內(nèi)存。 多很多。 我們的測量結(jié)果表明,根據(jù)JVM版本和操作系統(tǒng)版本以及硬件體系結(jié)構(gòu),最終使用的堆比32位多使用30-50%。 較大的堆還可能導(dǎo)致較長的GC暫停,從而影響應(yīng)用程序延遲-在4.5GB的堆上運(yùn)行完整的GC肯定比在3GB的堆上運(yùn)行需要更長的時間。 因此,僅僅因?yàn)?4比32大就跳到64位潮流上是不正確的。

但是……您什么時候才想要使用64位JVM? 在大多數(shù)情況下,原因是堆大小很大。 在不同的體系結(jié)構(gòu)上,您很快就會遇到32位體系結(jié)構(gòu)上最大堆大小的限制。 下面說明了不同平臺上的這些限制:

操作系統(tǒng) 最大堆 筆記
的Linux 2GB 在特定的內(nèi)核(例如ugemmem)上為3GB
視窗 1.5GB 帶有“ / 3GB”啟動標(biāo)志和通過/ LARGEADDRESSAWARE開關(guān)編譯的JRE的最大3GB)
Mac OS X 3.8GB 警報(bào)-找不到古老的Mac,因此未經(jīng)我測試

現(xiàn)在怎么這么糟? 畢竟,我敢打賭,您已經(jīng)看到32位計(jì)算機(jī)在16G + RAM上運(yùn)行并且運(yùn)行良好。 JVM在Windows上分配的內(nèi)存不足此16G的10%怎么了?

主要原因-地址空間。 理論上,在32位系統(tǒng)中,每個進(jìn)程最多可以分配4GB的內(nèi)存。 在Windows上打破這一點(diǎn)的是如何處理進(jìn)程地址空間。 Windows將進(jìn)程地址空間減少了一半。 其中一半保留給內(nèi)核(用戶進(jìn)程無法使用),另一半保留給用戶。 盒中有多少RAM無關(guān)緊要,一個32位進(jìn)程只能使用2GB RAM。 更糟糕的是,該地址空間必須是連續(xù)的,因此在實(shí)踐中,Windows機(jī)頂盒通常只剩下1.5-1.8GB的堆空間。

您可以使用32位窗口來減少內(nèi)核空間并增加用戶空間。 您可以在boot.ini中使用/ 3GB參數(shù)。 但是,要實(shí)際利用此機(jī)會,必須使用/ LARGEADDRESSAWARE開關(guān)來編譯/鏈接JVM。

不幸的是,至少對于Hotspot JVM并非如此。 直到最新的JDK 1.7版本,才使用此選項(xiàng)編譯JVM。 如果您在2006年后版本的jRockit上運(yùn)行,您會更加幸運(yùn)。 在這種情況下,您可以享受高達(dá)2.8-2.9GB的堆大小。

那么–我們可以得出結(jié)論,如果您的應(yīng)用程序需要超過2-3GB的內(nèi)存,那么您應(yīng)該始終在64位上運(yùn)行? 也許。 但是您也必須意識到這些威脅。 我們已經(jīng)介紹了罪魁禍?zhǔn)专C增加了堆消耗,并延長了GC暫停時間。 讓我們在這里分析原因。

問題1:在64位上需要30-50%的更多堆

為什么這樣? 主要是由于64位體系結(jié)構(gòu)中的內(nèi)存布局。 首先–在64位JVM上,對象標(biāo)頭是12個字節(jié)。 其次,對象引用可以是4個字節(jié),也可以是8個字節(jié),具體取決于JVM標(biāo)志和堆的大小。 與32位標(biāo)頭上的8個字節(jié)和引用標(biāo)本上的4個字節(jié)相比,這無疑增加了一些開銷。 您還可以深入研究我們的較早文章之一,以獲取有關(guān)計(jì)算對象的內(nèi)存消耗的更多信息。

問題2:較長的垃圾收集暫停時間

建立更多的堆意味著GC在清除未使用的對象時還有更多工作要做。 在現(xiàn)實(shí)生活中,這意味著在構(gòu)建大于12-16GB的堆時,您必須格外小心。 無需進(jìn)行微調(diào)和測量,您就可以輕松引入幾分鐘的完整GC暫停時間。 在延遲不是很關(guān)鍵并且您可以優(yōu)化吞吐量的應(yīng)用程序中,這可能沒問題,但是在大多數(shù)情況下,這可能會成為熱門。

那么,當(dāng)我需要更大的堆并且不希望引入由64位體系結(jié)構(gòu)引起的開銷時,該怎么辦? 在我們較早的博客文章中 ,我們介紹了幾種技巧–您可以通過堆分區(qū),GC調(diào)整,在不同的JVM上構(gòu)建或在堆外分配內(nèi)存來擺脫困境。

最后,讓我們重申一下,您應(yīng)該始終了解選擇64位JVM的后果。 但不要害怕此選項(xiàng)。

參考: 應(yīng)該使用32位還是64位JVM? 從我們的JCG合作伙伴 Vladimir Sor在Plumbr Blog博客上獲得。

翻譯自: https://www.javacodegeeks.com/2012/12/should-i-use-a-32-or-a-64-bit-jvm.html

32和64位jvm

總結(jié)

以上是生活随笔為你收集整理的32和64位jvm_我应该使用32位还是64位JVM?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。