本篇內容介紹了“java運行時的數(shù)據(jù)區(qū)域分別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、靈石網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Java運行時數(shù)據(jù)區(qū)域
主要用來作為當前線程所執(zhí)行的字節(jié)碼的行號指示器,就是通過它來知道需要執(zhí)行的字節(jié)碼指令地址。這塊區(qū)域是線程私有的,你看如果是線程共享的那切換線程之后誰知道下一條執(zhí)行該執(zhí)行哪里。如果執(zhí)行的Native方法的話,計數(shù)器的值就不是需要執(zhí)行的字節(jié)碼指令地址了,而是Undefined。
在內存區(qū)域中計數(shù)器是唯一一個沒有規(guī)定OutOfMemoryError情況的區(qū)域。
虛擬機棧是線程私有的,也就是每個線程它自身有一個虛擬機棧,棧里面放的是一個一個棧幀,每一個棧幀對應著一個方法的調用,也就是一個方法的調用就是一個棧幀的入棧,方法執(zhí)行結束就是一個棧幀的出棧。
棧幀主要用來存儲局部變量、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。所以多線程操作方法內部的局部變量就不需要擔心出什么可見性或者原子性問題了,因為它是線程私有的!
其中的局部變量表存放的是編譯期就已知的各種基本數(shù)據(jù)類型、對象的引用和returnAddress類型(為字節(jié)碼指令jsr、jsr_w和wet服務的,它指向了一條字節(jié)碼指令的地址)。
除了long和double占用兩個局部變量空間(slot),其他數(shù)據(jù)類型都只占用1個空間,其所需的內存空間在編譯器已確定。
當線程請求的棧深度大于虛擬機所允許的深度(例如遞歸深度太深了),將拋出StackOverflowError。或者如果虛擬機棧允許動態(tài)擴展那當擴展到無法申請需要的內存時候則拋出OutOfMemoryError。
和虛擬機棧很相似,主要區(qū)別就在于它是服務于Native方法,虛擬機棧服務于Java方法。有些虛擬機把本地方法棧和虛擬機棧合二為一例如(HotSpot)虛擬機。并且和虛擬機棧一樣會拋出StackOverflowError和OutOfMemoryError。
絕大部分情況下,堆是這幾部分中所占內存最大的一塊。它是所有線程共享的內存區(qū)域,隨著虛擬機的啟動而創(chuàng)建,它的目的就是存放對象實例!所有的對象實例以及數(shù)組都要在堆上面分配。
并且堆也是垃圾收集器的主要管理區(qū)域。根據(jù)垃圾處理器的分代收集算法,在堆中分為新生代和老年代。當內存不足的時候將拋出OutOfMemoryError。
和堆一樣,是所有線程共享的內存區(qū)域,用來存放已經(jīng)被虛擬機加載的類信息、常量、靜態(tài)變量、JIT編譯后的代碼等。編譯器時就將各種生成的字面量和符合引用放入常量池,在運行期間也有可能有新的常量加入例如用了String的intern()方法。
根據(jù)垃圾處理器的分代收集算法,永久代就在這里。當內存不足的時候將拋出OutOfMemoryError。
直接內存不是虛擬機運行時的數(shù)據(jù)區(qū)域的一部分,但是這里還是來說說。因為它還是很頻繁的被使用的!
NIO(New Input/Output),是通過通道和緩沖區(qū)的I/O方式,它使用Native函數(shù)庫直接分配堆外內存,然后通過堆中的DirectByteBuffer對象作為引用來操作這塊內存。
正常的內存流應該是本地IO-->直接內存-->非直接內存-->直接內存-->本地IO。
而直接內存就是本地IO-->直接內存-->本地IO。
所以它能在一些通用的場景顯著的提高性能。直接內存的大小受本機的總內存限制!
“java運行時的數(shù)據(jù)區(qū)域分別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
分享名稱:java運行時的數(shù)據(jù)區(qū)域分別是什么
URL分享:http://www.chinadenli.net/article24/pidoje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、網(wǎng)站導航、網(wǎng)站內鏈、企業(yè)建站、手機網(wǎng)站建設、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)