真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JVM直接內(nèi)存(DirectMemory)-創(chuàng)新互聯(lián)

本地內(nèi)存/直接內(nèi)存(Direct Memory)

直接內(nèi)存并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分,也不是Java虛擬機(jī)規(guī)范中定義的內(nèi)存區(qū)域,但是這部分內(nèi)存也被頻繁的使用;

創(chuàng)新互聯(lián)在網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、成都App定制開發(fā)、網(wǎng)站運(yùn)營等方面均有出色的表現(xiàn),憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,我們更提供一系列全網(wǎng)整合營銷推廣,網(wǎng)站制作和網(wǎng)站推廣的服務(wù),以推動(dòng)各中小企業(yè)全面信息化,并利用創(chuàng)新技術(shù)幫助各行業(yè)提升企業(yè)形象和運(yùn)營效率。

內(nèi)存不足時(shí)拋出OutOfMemoryError或 者OutOfMemoryError:Direct buffer memory

特性

  • -XX:MaxDirectMemorySize 大值,默認(rèn)和Java堆大值一樣

  • 不屬于運(yùn)行時(shí)數(shù)據(jù)區(qū)

  • 本機(jī)直接內(nèi)存的分配不受Java堆大小的限制,僅受本機(jī)總內(nèi)存大小以及處理器尋址空間的限制

說明:在JDK 1.4 中新加入了NIO(New Input/Output)類,引入了一種基于通道(Channel)與緩沖區(qū)(Buffer)的I/O 方式,它可以使用Native函數(shù)庫直接分配堆外內(nèi)存,然后通過一個(gè)存儲(chǔ)在Java 堆里面的DirectByteBuffer 對(duì)象作為這塊內(nèi)存的引用進(jìn)行操作。這樣能在一些場(chǎng)景中顯著提高性能,因?yàn)楸苊饬嗽贘ava 堆和Native 堆中來回復(fù)制數(shù)據(jù)。

注意使用Native函數(shù)庫分配堆外內(nèi)存,通過JAVA堆DirectByteBuffer引用堆外內(nèi)存

直接內(nèi)存是一塊物理內(nèi)存,專門用于JVM和IO設(shè)備打交道,Java底層使用C語言的API調(diào)用操作系統(tǒng)與IO設(shè)備進(jìn)行交互。

例如,Java內(nèi)存中有一個(gè)字節(jié)數(shù)組,現(xiàn)在調(diào)用流將它寫入磁盤文件,那么JVM首先會(huì)將這個(gè)字節(jié)數(shù)組先拷貝一份到堆外內(nèi)存中,然后調(diào)用C語言API指明將某個(gè)連續(xù)地址范圍的數(shù)據(jù)寫入磁盤。

讀操作也是類似,而JVM額外做的拷貝工作也是有意義的,因?yàn)镴VM是基于自動(dòng)垃圾回收機(jī)制運(yùn)行的,所有內(nèi)存中的數(shù)據(jù)會(huì)在GC時(shí)不停的被移動(dòng),如果你調(diào)用系統(tǒng)API告訴操作系統(tǒng)將內(nèi)存某某位置的內(nèi)存寫入磁盤,而此時(shí)發(fā)生GC移動(dòng)了該部分?jǐn)?shù)據(jù),GC結(jié)束后操作系統(tǒng)是不是就寫錯(cuò)數(shù)據(jù)了。

所以,JVM對(duì)于與外圍IO設(shè)備交互的情況下,都會(huì)將內(nèi)存數(shù)據(jù)復(fù)制一份到堆外內(nèi)存中,然后調(diào)用系統(tǒng)API間接的寫入磁盤,讀也是類似的。由于堆外內(nèi)存不受GC管理,所以用完一定得記得釋放

直接內(nèi)存(堆外內(nèi)存)與堆內(nèi)存比較
  • 直接內(nèi)存申請(qǐng)空間耗費(fèi)更高的性能,當(dāng)頻繁申請(qǐng)到一定量時(shí)尤為明顯;
  • 直接內(nèi)存IO讀寫的性能要優(yōu)于普通的堆內(nèi)存,在多次讀寫操作的情況下差異明顯;
堆外內(nèi)存
  • 直接內(nèi)存:可通過-XX:MaxDirectMemorySize調(diào)整大小,內(nèi)存不足時(shí)拋出OutOf-MemoryError或 者OutOfMemoryError:Direct buffer memory;

  • 線程堆棧:可通過-Xss調(diào)整大小,內(nèi)存不足時(shí)拋出StackOverflowError(如果線程請(qǐng)求的棧深度大 于虛擬機(jī)所允許的深度)或者OutOfMemoryError(如果Java虛擬機(jī)棧容量可以動(dòng)態(tài)擴(kuò)展,當(dāng)棧擴(kuò)展時(shí)無法申請(qǐng)到足夠的內(nèi)存);

  • Socket緩存區(qū):每個(gè)Socket連接都Receive和Send兩個(gè)緩存區(qū),分別占大約37KB和25KB內(nèi)存,連接多的話這塊內(nèi)存占用也比較可觀。如果無法分配,可能會(huì)拋出IOException:Too many open files異常;

  • JNI代碼:如果代碼中使用了JNI調(diào)用本地庫,那本地庫使用的內(nèi)存也不在堆中,而是占用Java虛擬機(jī)的本地方法棧和本地內(nèi)存的;

  • 虛擬機(jī)和垃圾收集器:虛擬機(jī)、垃圾收集器的工作也是要消耗一定數(shù)量的內(nèi)存的;

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:JVM直接內(nèi)存(DirectMemory)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/epigh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部