java中怎么利用JVM存取數(shù)據(jù)

本篇文章給大家分享的是有關(guān)java中怎么利用JVM存取數(shù)據(jù),小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供太仆寺企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、網(wǎng)站設(shè)計H5場景定制、小程序制作等業(yè)務(wù)。10年已為太仆寺眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

1、程序計數(shù)器

這個內(nèi)存區(qū)域是Java虛擬機(jī)規(guī)范中唯一一個沒有規(guī)定任何OOM(OutOfMemoryError)情況的區(qū)域,這是這個區(qū)域最大的特點之一,這是因為程序計數(shù)器中存儲的數(shù)據(jù)所占空間的大小不會隨程序的執(zhí)行而發(fā)生改變,因此,對于程序計數(shù)器是不會發(fā)生內(nèi)存溢出現(xiàn)象(OutOfMemory)的。

這個區(qū)域主要是負(fù)責(zé)記錄正在執(zhí)行的虛擬機(jī)字節(jié)碼指令地址,即當(dāng)前線程執(zhí)行的字節(jié)碼的行號指示器(注意:JVM不是直接執(zhí)行Java代碼,而是執(zhí)行.class文件,所以只要其他編程語言能翻譯成.class文件一樣能放入JVM中執(zhí)行)。

JVM會給每個線程一個獨立的程序計數(shù)器,計數(shù)器之間互不影響,且通過線程輪流切換并且分配處理器執(zhí)行時間來實現(xiàn)JVM的多線程。不過當(dāng)線程執(zhí)行的是Native方法的時候這個計數(shù)器中的值為undefined。

2、Java虛擬機(jī)棧和程序計數(shù)器一樣的是Java虛擬機(jī)棧是線程私有,生命周期和線程相同。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法在執(zhí)行的時候都會創(chuàng)建棧幀,用來存儲局部變量表,操作數(shù)棧,動態(tài)鏈接,方法出口等信息,每個方法從調(diào)用到執(zhí)行完成的過程,就對應(yīng)一個棧幀在虛擬機(jī)中入棧到出棧的過程,其中64位長度的long和double類型的數(shù)據(jù)會占用2個局部變量空間,其余的數(shù)據(jù)類型只占用1個。

這里需要理解一下的就是為什么要用棧這個結(jié)構(gòu)呢,比如A方法中調(diào)用了B方法,虛擬機(jī)中是先讓A方法的棧幀進(jìn)入虛擬機(jī)棧執(zhí)行,當(dāng)執(zhí)行到調(diào)用B方法的語句就讓B棧幀進(jìn)入,執(zhí)行完之后B棧幀就出棧,A棧就繼續(xù)執(zhí)行。這里注意的是如果遞歸的方法遞歸的太深很容易拋出下面兩種異常,所以遞歸雖然寫起來方便,但是性能會有所下降,并且容易拋出異常。

Java虛擬機(jī)規(guī)范中,對這個區(qū)域規(guī)定了兩種異常狀況

線程請求棧的深度大于虛擬機(jī)所允許棧的深度,將拋出Stack Overflow Error  如果虛擬機(jī)棧可以動態(tài)擴(kuò)展且擴(kuò)展時無法申請到足夠的內(nèi)存,會拋出OutOfMemoryError

3、本地方法棧

與虛擬機(jī)棧作用相似,不過是虛擬機(jī)棧為虛擬機(jī)執(zhí)行Java方法提供,而本地方法為虛擬機(jī)使用到的Native方法服務(wù),Native方法多是用C++寫的。拋出的異常和虛擬機(jī)棧相同。

4、Java堆

Java堆是與前面的區(qū)域不同的是:這個區(qū)域是被所有線程共享的一塊內(nèi)存區(qū)域,用來存放對象實例,并為對象實例分配好內(nèi)存。Java虛擬機(jī)規(guī)范中這樣描述:所有對象實例以及數(shù)組都要在堆上分配Java堆也是垃圾收集器管理的主要區(qū)域,也叫”GC堆“。由于現(xiàn)在的垃圾回收算法多是分代收集,所以Java堆里面又可分為:新生代和老年代。并且根據(jù)Java虛擬機(jī)規(guī)范的規(guī)定:Java堆可以處于物理上不連續(xù)的內(nèi)存空間中,只要邏輯上連續(xù)即可。有實例沒有被分配,且堆無法再擴(kuò)展的時候會拋出OutOfMemoryError異常,虛擬機(jī)調(diào)優(yōu)其實也主要關(guān)注的是這個區(qū)域。

5、方法區(qū)

與Java堆一樣,線程共享,用來存儲被虛擬機(jī)加載的類信息,常量,靜態(tài)變量。這個區(qū)域Java虛擬機(jī)規(guī)范對其特別寬松,既可以像Java堆那樣不需要連續(xù)內(nèi)存,又可以選擇固定大小和可擴(kuò)展。還可以選擇不實現(xiàn)垃圾收集,這個區(qū)域的內(nèi)存回收目標(biāo)主要是針對常量池的回收和對類型的卸載。當(dāng)無法滿足內(nèi)存分配需求時,將拋出OutOfMemoryError異常。

目前虛擬機(jī)Hotspot已經(jīng)將這部分存儲空間從使用JVM內(nèi)存換成使用本地內(nèi)存,即這部分不再叫永久代,而是元空間。這個元空間實際上是JVM動態(tài)規(guī)定內(nèi)存大小。這個替換有什么優(yōu)勢呢?因為字符串常量池是存在永久代中,很容易出現(xiàn)性能問題,并且類和方法信息大小難確定,給永久代的的大小指定帶來困難,而且GC會對永久代特殊處理,這就增加了GC的復(fù)雜性。從JDK1.7開始,字符串常量池就劃分進(jìn)了堆中,其他的更多是元空間在內(nèi)存劃分的算法上更趨于合理

6、運行時常量池

是方法區(qū)的一部分。用于存放編譯期生成的各種字面量和符號引用,同時也會把翻譯出來的直接引用也存儲在運行時的常量池中,具有動態(tài)性。常量不一定只有編譯期才能產(chǎn)生,運行期間也可以將新的常量放入池中。例如String的Intern()方法。同樣拋出OutOfMemoryError異常

三、直接內(nèi)存

這個區(qū)域并不是屬于運行時數(shù)據(jù)區(qū)域,但是這個區(qū)域也會被頻繁使用,并且拋出OOM異常。這個區(qū)域主要是由于在JDK1.4中新加入了NIO(New Input/Output)類,引入了一種基于通道與緩沖區(qū)的I/O方式,它可以使用Native函數(shù)庫直接分配堆外內(nèi)存,通過一個儲存在Java堆中的DirectByteBuffer對象作為這塊內(nèi)存的引用進(jìn)行操作。

這樣能避免在Java堆和Native堆中來回復(fù)制數(shù)據(jù),從而在一些場景中顯著提高性能。直接內(nèi)存分配不會受到Java堆大小的限制,會受到本機(jī)總內(nèi)存大小及處理器尋址空間的限制。會拋出OutOfMemoryError異常

四、總結(jié)

只有程序計數(shù)器不會報出任何相關(guān)OOM異常,而Java虛擬機(jī)棧有可能會報出OOM或Stack Overflow異常。Java虛擬機(jī)棧主要是存儲方法的一些信息,能讓方法順利的執(zhí)行,而Java堆存儲的是對象的信息。虛擬機(jī)的垃圾回收算法主要在這一塊,并且平常調(diào)優(yōu)的區(qū)域也是在這一塊。

以上就是java中怎么利用JVM存取數(shù)據(jù),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:java中怎么利用JVM存取數(shù)據(jù)
鏈接地址:http://m.kartarina.com/article12/gogcdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)域名注冊標(biāo)簽優(yōu)化企業(yè)網(wǎng)站制作網(wǎng)站策劃微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
主站蜘蛛池模板: 精品一区二区三区无码视频| 小13箩利洗澡无码视频网站| 亚洲av永久无码精品天堂久久| 国产午夜精品无码| 亚洲av无码一区二区三区天堂古代| 无码日本电影一区二区网站| 国模吧无码一区二区三区| 亚洲日韩中文字幕无码一区| 日韩精品无码一区二区视频| 久热中文字幕无码视频| 东京热无码一区二区三区av| 无码aⅴ精品一区二区三区| 亚洲V无码一区二区三区四区观看| 无码办公室丝袜OL中文字幕| 日木av无码专区亚洲av毛片| 国产精品无码一区二区在线观一 | 2024你懂的网站无码内射| 精品无码一区二区三区水蜜桃| 亚洲国产成人精品无码一区二区| 国产麻豆天美果冻无码视频| 亚洲爆乳AAA无码专区| 精品欧洲AV无码一区二区男男| 久久久无码精品亚洲日韩软件| 色综合久久久无码中文字幕 | 日韩乱码人妻无码中文视频 | 亚洲情XO亚洲色XO无码| 国产精品无码亚洲精品2021 | 国产AV无码专区亚洲AV男同 | 小泽玛丽无码视频一区| 西西444www无码大胆| 秋霞无码一区二区| 久久ZYZ资源站无码中文动漫| 午夜福利av无码一区二区| 成人无码A区在线观看视频| 精品无码国产自产拍在线观看蜜| 国产乱人伦无无码视频试看| 亚洲高清无码在线观看| 成年午夜无码av片在线观看| 国产丝袜无码一区二区三区视频| 国产午夜无码视频在线观看| 亚洲Av永久无码精品三区在线|