亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java運行時數據區劃分原理是什么

發布時間:2021-03-10 17:04:06 來源:億速云 閱讀:139 作者:TREX 欄目:編程語言

本篇內容主要講解“Java運行時數據區劃分原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java運行時數據區劃分原理是什么”吧!

Java的特點有哪些

Java的特點有哪些 1.Java語言作為靜態面向對象編程語言的代表,實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。


Java中對象創建,內存分配,垃圾回收的權力交給了虛擬機,這其中有利也有弊,程序員也減輕了負擔,但是如果不熟悉Java的內存區域劃分,一旦出現內存溢出和泄漏,將會很難定位問題的根源,這就有必要了解Java的運行時數據區劃分。

Java運行時數據區劃分原理是什么

方法區(Method Area)

是由各個線程共享的內存區域,用來存儲已被虛擬機加載的類型信息、常量、靜態變量、即時編譯器編譯后的代碼緩存等數據。

堆(Heap)

Java虛擬機所管理的一塊最大的內存區域,由所有的線程共享的一塊內存區域;堆內存在虛擬機啟動時創建,用來存放對象實例,數組;Java堆是垃圾收集器管理的內存,在G1垃圾收集器之前,堆內存普遍采用分代設計思想,新生代,老年代,永久代...,現代垃圾收集器已經不主張采用分代設計理論概念;Java堆既可以被實現成固定大小的,也可以是可擴展的,不過當前主流的Java虛擬機都是按照可擴展來實現的(通過參數-Xmx和-Xms設定)。如果在Java堆中沒有內存完成實例分配,并且堆也無法再擴展時,Java虛擬機將會拋出OutOfMemoryError異常。

虛擬機棧(VM Stack)

虛擬機棧為線程私有,每個方法執行時,虛擬機都會創建棧幀存儲局部變量表(包含Java的基本數據類型,以及對象的引用,非對象本身)、操作數棧、動態連接方法出口等信息,方法從被調用到執行結束,對應著一個棧幀在虛擬機中從入棧到出棧的過程。基本數據類型在局部變量表中的存儲空間以局部變量槽(slot)來表示,64位長度的long和double占用兩個變量槽,其余數據類型占用一個,局部變量表所需要的內存空間在編譯期完成,因此進入方法時,每個方法在棧幀需要分配的空間時確定的,運行期間并不會改變局部變量表的大小(即變量槽的數量),每個槽的空間大小根據虛擬機的實現而定。
如果線程請求的棧深度大于虛擬機所允許的深度,將拋出StackOverflowError異常;如果Java虛擬機棧容量可以動態擴展[2],當棧擴展時無法申請到足夠的內存會拋出OutOfMemoryError異常。

本地方法棧(Native Method Stack)

類似于虛擬機棧的作用,區別在于虛擬機棧用來執行Java的方法,本地方法棧為虛擬機使用到的笨的方法服務。

程序計數器(Program Counter Register)

是Java內存中較小的一部分內存空間,由每個Java線程所獨享,可以理解為當前線程執行的字節碼行號指示器,Java中程序的執行往往是多線程的,在某一個確切的時刻,一個處理器內核直會執行線程中的一條指令,每個線程都是在不停的切換執行,為了保證切換后可以執行到正確的位置,每個線程都要有一個獨立的程序計數器,每個計數器之間互不影響。


到此,相信大家對“Java運行時數據區劃分原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常熟市| 商水县| 杭锦旗| 油尖旺区| 肇州县| 房山区| 汉中市| 江川县| 嘉祥县| 海安县| 锦屏县| 瓦房店市| 自贡市| 侯马市| 宁明县| 肃南| 惠来县| 津南区| 南雄市| 岚皋县| 乾安县| 天门市| 疏勒县| 通化县| 咸宁市| 大姚县| 松桃| 台南市| 黑龙江省| 慈利县| 崇阳县| 安龙县| 郸城县| 泗水县| 重庆市| 台湾省| 威信县| 林周县| 囊谦县| 新乡县| 民和|