91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java中內存分配的情況有哪些

發布時間:2021-01-13 15:07:58 來源:億速云 閱讀:177 作者:Leah 欄目:編程語言

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

Java內存五大區

棧:用于保存函數內部的局部變量,函數形參,一旦超出作用域,就刪除

堆:凡是new出來的東西都是存放在堆里,也可以說可變對象(非基本數據類型)都是保存在這里面。

堆里面的東西,都有一個內存(16進制),棧中存放的就是這個16進制的內存值。

堆里面存放的東西都用默認值:

整數:默認值0

浮點數:默認0.0

布爾:默認false

字符:默認'\u0000‘

引用:默認null  

本地方法棧:與操作系統有關

方法區:存儲.class相關信息,包含方法的信息

寄存器:與CPU相關

堆中存的是對象。棧中存的是基本數據類型和堆中對象的引用。一個對象的大小是不可估計的,或者說是可以動態變化的,但是在棧中,一個對象只對應了一個4btye的引用(堆棧分離的好處:))。

為什么不把基本類型放堆中呢?因為其占用的空間一般是1~8個字節——需要空間比較少,而且因為是基本類型,所以不會出現動態增長的情況——長度固定,因此棧中存儲就夠了,如果把他存在堆中是沒有什么意義的(還會浪費空間,后面說明)。可以這么說,基本類型和對象的引用都是存放在棧中,而且都是幾個字節的一個數,因此在程序運行時,他們的處理方式是統一的。

引用數據類型因為大小不固定,所以會存在堆內存中,棧內存中存的是堆內存的地址,每次讀取值時,先找到棧內存中的內存地址,在通過內存地址,找到在堆內存中的對應的對象。

棧內存和堆內存的關系圖示

Java中內存分配的情況有哪些

堆:程序員向操作系統申請一塊內存,當系統收到程序的申請時,會遍歷一個記錄空閑內存地址的鏈表,尋找第一個空間大于所申請空間的堆結點,然后將該結點從空閑結點鏈表中刪除,并將該結點的空間分配給程序。分配的速度較慢,地址不連續,容易碎片化。此外,由程序員申請,同時也必須由程序員負責銷毀,否則則導致內存泄露。

棧:由程序自動向操作系統申請分配以及回收,速度快,使用方便,但程序員無法控制。若分配失敗,則提示棧溢出錯誤。注意,const局部變量也儲存在棧區內,棧區向地址減小的方向增長。

內存泄漏:我們申請了一塊內存空間,在使用完后,沒有即使釋放。它的一般表現方式是程序運行時間越長,占用內存越多,最終用盡全部內存,整個系統崩潰。由程序申請的一塊內存,且沒有任何一個指針指向它,那么這塊內存就泄露了。

內存泄漏解決辦法:良好的編碼習慣,使用了內存分配的函數,一旦使用完畢,要記得要使用其相應的函數釋放掉。malloc和delete搭配使用,new和free搭配使用

調用對象,內存分配情況

Java中內存分配的情況有哪些

調用兩個對象,內存分配情況

Java中內存分配的情況有哪些

對象作為返回值

Java中內存分配的情況有哪些

static變量

Java中內存分配的情況有哪些

繼承

Java中內存分配的情況有哪些

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

向AI問一下細節

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

AI

贡觉县| 开化县| 三明市| 正镶白旗| 宜州市| 临夏县| 东乌珠穆沁旗| 和平区| 积石山| 江华| 长治市| 靖安县| 璧山县| 武汉市| 定西市| 乃东县| 聂拉木县| 大埔区| 博野县| 安新县| 商水县| 昭苏县| 蒙城县| 上高县| 汶川县| 上饶县| 宝清县| 同江市| 保靖县| 盘山县| 吴江市| 道真| 那坡县| 南召县| 本溪市| 封开县| 长海县| 彰武县| 大石桥市| 姜堰市| 黎城县|