歡迎來到培訓(xùn)無憂網(wǎng)!

全國切換

咨詢熱線 400-001-5729

位置:培訓(xùn)無憂網(wǎng) > 新聞資訊 > 電腦/IT > java培訓(xùn) >  Java培訓(xùn)之對比堆與本地內(nèi)存有哪些區(qū)別

Java培訓(xùn)之對比堆與本地內(nèi)存有哪些區(qū)別

來源:粵嵌 發(fā)布人:星星

2022-01-08 15:27:07|已瀏覽:657次

堆與本地內(nèi)存有哪些區(qū)別

      使用Java編程時,考慮到終寫成程序的執(zhí)行效率,可能在選擇直接使用Java堆new對象,或是直接分配本地內(nèi)存之間很難做出決定。來對比下Java堆與本地內(nèi)存。

      使用Java的一個好處就是你可以不用親自來管理內(nèi)存的分配和釋放。當(dāng)你用new關(guān)鍵字來實(shí)例化一個對象時,它所需的內(nèi)存會自動的在Java堆中分配。堆會被垃圾回收器進(jìn)行管理,并且它會在對象超出作用域時進(jìn)行內(nèi)存回收。但是在JVM中有一個‘后門’可以讓你訪問不在堆中的本地內(nèi)存(native memory)。
      使用Unsafe來分配和回收內(nèi)存
      sun.misc.Unsafe可以讓你在Java中分配和回收本地內(nèi)存,就像C語言中的malloc和free。通過它分配的內(nèi)存不在Java堆中,并且不受垃圾回收器的管理,因此在它被使用完的時候你需要自己來負(fù)責(zé)釋放和回收。
      跨越JVM的屏障來讀本地內(nèi)存大約會比直接讀Java堆中的內(nèi)存慢10倍,而對于寫操作會慢大約2倍。但是需要注意的是,由于每一個SomeMemoryObject對象所管理的本地內(nèi)存空間都是獨(dú)立的,因此讀寫操作都不是連續(xù)的。那么接下來就來對比下讀寫連續(xù)的內(nèi)存空間的性能。
      訪問一大塊的連續(xù)內(nèi)存空間
      在做連續(xù)訪問的時候,Java堆內(nèi)存通常都比本地內(nèi)存要快。對于隨機(jī)地址訪問,堆內(nèi)存僅僅比本地內(nèi)存慢一點(diǎn)點(diǎn),并且是針對大塊連續(xù)數(shù)據(jù)的時候,而且沒有慢很多。
      在Java中使用本地內(nèi)存有它的意義,比如當(dāng)你要操作大塊的數(shù)據(jù)時(>2G)并且不想使用垃圾回收器(GC)的時候。從延遲的角度來說,直接訪問本地內(nèi)存不會比訪問Java堆快。這個結(jié)論其實(shí)是有道理的,因?yàn)榭缭絁VM屏障肯定是有開銷的。這樣的結(jié)論對使用本地還是堆的ByteBuffer同樣適用。使用本地ByteBuffer的速度提升不在于訪問這些內(nèi)存,而是它可以直接與操作系統(tǒng)提供的本地IO進(jìn)行操作。

      事實(shí)上使用Java寫的程序,經(jīng)過編譯器編譯打亂后很可能已經(jīng)不是自己所想象的樣子了,畢竟Java是面向?qū)ο蟮恼Z言,所以更多的時候還不如怎么寫得快就怎么寫,畢竟編譯器在很多時候都不太聰明,我們自以為寫的很直接的程序也有可能編譯成亂糟糟的復(fù)雜的機(jī)器語言。

      本文由培訓(xùn)無憂網(wǎng)達(dá)內(nèi)教育專屬課程顧問整理發(fā)布,更多Java培訓(xùn)課程資訊歡迎關(guān)注培訓(xùn)無憂網(wǎng)Java培訓(xùn)頻道或添加老師微信:15033336050

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請注明出處和鏈接 http://m.elsolbar.com/news-id-13846.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓(xùn)無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請關(guān)注java培訓(xùn)頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會一對一幫助你規(guī)劃更適合你的專業(yè)課程!
  • 姓名:

  • 手機(jī):

  • 地區(qū):

  • 想學(xué)什么:

  • 培訓(xùn)無憂網(wǎng)
免 費(fèi) 申 請 試 聽
提交申請,《培訓(xùn)無憂網(wǎng)》課程顧問老師會一對一幫助你規(guī)劃更適合你的專業(yè)課程!