最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java內存分配多種情況的用法解析

 更新時間:2019年11月06日 09:35:40   作者:何去何從gw  
這篇文章主要介紹了Java內存分配多種情況的用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了Java內存分配多種情況的用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Java內存五大區(qū)

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

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

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

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

整數(shù):默認值0

浮點數(shù):默認0.0

布爾:默認false

字符:默認'\u0000‘

引用:默認null  

本地方法棧:與操作系統(tǒng)有關

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

寄存器:與CPU相關

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

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

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

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

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

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

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

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

調用對象,內存分配情況

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

對象作為返回值

static變量

繼承

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java方法重載和參數(shù)類型自動提升方式

    java方法重載和參數(shù)類型自動提升方式

    這篇文章主要介紹了java方法重載和參數(shù)類型自動提升方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • JVM類加載,垃圾回收

    JVM類加載,垃圾回收

    這篇文章主要介紹了JVM的幾種垃圾回收器,文中通過示例代碼介紹的很詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • Java中異常傳播的實現(xiàn)

    Java中異常傳播的實現(xiàn)

    在Java中,異常傳播是一個重要的概念,本文主要介紹了Java中異常傳播的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • java編程簡單獲取圖片像素的方法

    java編程簡單獲取圖片像素的方法

    這篇文章主要介紹了java編程簡單獲取圖片像素的方法,涉及Java針對圖片的讀取與屬性獲取技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Java操作MongoDB數(shù)據(jù)庫的示例代碼

    Java操作MongoDB數(shù)據(jù)庫的示例代碼

    這篇文章主要介紹了Java操作MongoDB的示例代碼,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-04-04
  • JavaSE中比較器、深拷貝淺拷貝舉例詳解

    JavaSE中比較器、深拷貝淺拷貝舉例詳解

    在Java中一切都可以視為對象,在Java中我們經(jīng)常使用引用去操作對象,下面這篇文章主要給大家介紹了關于JavaSE中比較器、深拷貝淺拷貝的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • MyBatis處理大字段或BLOB、CLOB類型數(shù)據(jù)方式

    MyBatis處理大字段或BLOB、CLOB類型數(shù)據(jù)方式

    這篇文章主要介紹了MyBatis處理大字段或BLOB、CLOB類型數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別

    java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別

    這篇文章主要介紹了java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java中 String和StringBuffer的區(qū)別實例詳解

    java中 String和StringBuffer的區(qū)別實例詳解

    這篇文章主要介紹了java中 String和StringBuffer的區(qū)別實例詳解的相關資料,一個小的例子,來測試String和StringBuffer在時間和空間使用上的差別,需要的朋友可以參考下
    2017-04-04
  • Spring?@Autowired注解超詳細示例

    Spring?@Autowired注解超詳細示例

    @Autowired注解可以用在類屬性,構造函數(shù),setter方法和函數(shù)參數(shù)上,該注解可以準確地控制bean在何處如何自動裝配的過程。在默認情況下,該注解是類型驅動的注入
    2022-08-08

最新評論

天水市| 新津县| 陵川县| 麻城市| 邹平县| 大洼县| 个旧市| 丰城市| 邢台县| 大悟县| 遂宁市| 嘉荫县| 黑水县| 雅江县| 沙坪坝区| 讷河市| 砚山县| 阳高县| 津市市| 岑巩县| 柯坪县| 高雄市| 江川县| 榆中县| 华安县| 常山县| 萨迦县| 泰顺县| 苏尼特右旗| 房产| 大丰市| 将乐县| 七台河市| 德惠市| 安陆市| 桐乡市| 霍城县| 资阳市| 巨野县| 通州市| 邹平县|