中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Java中有哪些內存分配策略

發布時間:2021-07-02 14:51:25 來源:億速云 閱讀:192 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關Java中有哪些內存分配策略,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 Java內存分配

簡單的說Java把內存劃分成兩種:一種是棧內存,一種是堆內存。在函數中定義的一些基本類型的變量和對象的引用變量都在函數的棧內存中分配。

當在一段代碼塊定義一個變量時,Java就在棧中為這個變量分配內存空間,當超過變量的作用域后,Java會自動釋放掉為該變量所分配的內存空間,該內存空間可以立即被另作他用。 堆內存用來存放由new創建的對象和數組。在堆中分配的Java內存,由Java虛擬機的自動垃圾回收器來管理。

在堆中產生了一個數組或對象后,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等于數組或對象在堆內存中的首地址,棧中的這個變量就成了數組或對象的引用變量。 引用變量就相當于是為數組或對象起的一個名稱,以后就可以在程序中使用棧中的引用變量來訪問堆中的數組或對象。

Java內存分配策略

按照編譯原理的觀點,程序運行時的Java內存分配有三種策略,分別是靜態的,棧式的,和堆式的.

靜態存儲分配是指在編譯時就能確定每個數據目標在運行時刻的存儲空間需求,因而在編譯時就可以給他們分配固定的內存空間.這種分配策略要求程序代碼中不允 許有可變數據結構(比如可變數組)的存在,也不允許有嵌套或者遞歸的結構出現,因為它們都會導致編譯程序無法計算準確的存儲空間需求.

棧式存儲分配也可稱為動態存儲分配,是由一個類似于堆棧的運行棧來實現的.和靜態存儲分配相反,在棧式存儲方案中,程序對數據區的需求在編譯時是完全未知 的,只有到運行的時候才能夠知道,但是規定在運行中進入一個程序模塊時,必須知道該程序模塊所需的數據區大小才能夠為其分配內存.和我們在數據結構所熟知 的棧一樣,棧式存儲分配按照先進后出的原則進行分配。

靜態存儲分配要求在編譯時能知道所有變量的存儲要求,棧式存儲分配要求在過程的入口處必須知道所有的存儲要求,而堆式存儲分配則專門負責在編譯時或運行時 模塊入口處都無法確定存儲要求的數據結構的內存分配,比如可變長度串和對象實例.堆由大片的可利用塊或空閑塊組成,堆中的內存可以按照任意順序分配和釋 放.

以上就是Java中有哪些內存分配策略,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

连州市| 莆田市| 黔西| 左贡县| 辉县市| 商河县| 疏附县| 巴彦淖尔市| 汝南县| 宁陕县| 湘潭县| 大埔县| 出国| 兴文县| 南皮县| 衡南县| 西充县| 金坛市| 雷州市| 雅江县| 房产| 平潭县| 汽车| 宽甸| 依兰县| 河曲县| 安阳市| 贵溪市| 都昌县| 昆山市| 蚌埠市| 扶余县| 西丰县| 疏附县| 遂平县| 张家港市| 正蓝旗| 霍州市| 綦江县| 合川市| 静安区|