Java中的內(nèi)存分配圖解
Java的內(nèi)存分配
Java 程序運(yùn)行時(shí),需要在內(nèi)存中分配空間。
為了提高運(yùn)算效率,就對(duì)空間進(jìn)行了不同區(qū)域的劃分,因?yàn)槊恳黄瑓^(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存管理方式。
棧內(nèi)存
棧內(nèi)存:存儲(chǔ)局部變量,定義在方法里面的變量
例如arr使用完畢,立即消失特點(diǎn):棧內(nèi)存的數(shù)據(jù)用完就釋放。
堆內(nèi)存
堆內(nèi)存:存儲(chǔ)new出來的的內(nèi)容(實(shí)體,對(duì)象)數(shù)組在初始化時(shí),會(huì)為存儲(chǔ)空間添加默認(rèn)值
- 整數(shù):0
- 浮點(diǎn)數(shù):0.0
- 布爾:false
- 字符:空字符
- 引用數(shù)據(jù):null
注意:每一個(gè)new出來的東西都有一個(gè)地址值,使用完畢,會(huì)在垃圾站回收器空間時(shí)被回收
創(chuàng)建數(shù)組內(nèi)存分析
當(dāng)定義一個(gè)數(shù)組時(shí),會(huì)找到地址,如果沒有初始化(沒有為數(shù)組賦值),系統(tǒng)就會(huì)默認(rèn)給數(shù)組下標(biāo)添加默認(rèn)值
例如創(chuàng)建一個(gè)長(zhǎng)度3的數(shù)組
int[] arr=new int[3]
在棧內(nèi)存中保存的是堆內(nèi)存空間的訪問地址,棧內(nèi)存會(huì)有個(gè)地址指向堆內(nèi)存的地址
創(chuàng)建對(duì)象內(nèi)存分析
定義一個(gè)學(xué)生類
創(chuàng)建Application來調(diào)用Student類
Main() 函數(shù)
main()函數(shù)稱為主函數(shù),一個(gè)程序中有且只有一個(gè),擁有程序的執(zhí)行權(quán),程序在執(zhí)行時(shí)總是先找到主函數(shù),然后從它開始執(zhí)行
當(dāng)它調(diào)用某個(gè)子函數(shù)時(shí),便將執(zhí)行權(quán)交給被調(diào)用函數(shù),被調(diào)用函數(shù)執(zhí)行完畢后,再將執(zhí)行權(quán)還給主調(diào)函數(shù),主函數(shù)繼續(xù)執(zhí)行,一旦主函數(shù)結(jié)束,代表整個(gè)程序就結(jié)束了
執(zhí)行過程分析:
首先,main方法會(huì)先進(jìn)入棧里面,然后再執(zhí)行student的這個(gè)實(shí)例化,student這個(gè)對(duì)象就被創(chuàng)建,創(chuàng)建后會(huì)被加載到棧里面
在棧里面student這個(gè)對(duì)象就會(huì)去找堆中new的Student類型,然后堆會(huì)給student的屬性一個(gè)默認(rèn)的值,name是null,不同的類型默認(rèn)值不同
然后用戶自定義再給name賦值,name的值就可以輸出了
執(zhí)行完這個(gè)程序,這個(gè)student就會(huì)出棧,然后main方法也出棧了
到此這篇關(guān)于Java中的內(nèi)存分配圖解的文章就介紹到這了,更多相關(guān)Java內(nèi)存分配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基本類型與byte數(shù)組之間相互轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄狫ava基本類型與byte數(shù)組之間相互轉(zhuǎn)換方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08Java實(shí)現(xiàn)字節(jié)數(shù)B轉(zhuǎn)化為KB、MB、GB的方法示例【測(cè)試可用】
這篇文章主要介紹了Java實(shí)現(xiàn)字節(jié)數(shù)B轉(zhuǎn)化為KB、MB、GB的方法,結(jié)合實(shí)例形式分析了java字節(jié)數(shù)的轉(zhuǎn)換運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-08-08springboot 設(shè)置CorsFilter跨域不生效的解決
這篇文章主要介紹了springboot 設(shè)置CorsFilter跨域不生效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11用3個(gè)實(shí)例從原理到實(shí)戰(zhàn)講清楚Log4j史詩(shī)級(jí)漏洞
最近應(yīng)該很多人都在關(guān)注著一個(gè)漏洞Apache Log4j 2遠(yuǎn)程代碼執(zhí)行,該漏洞一旦被攻擊者利用會(huì)造成嚴(yán)重危害,這篇文章主要給大家介紹了關(guān)于如何用3個(gè)實(shí)例從原理到實(shí)戰(zhàn)講清楚Log4j史詩(shī)級(jí)漏洞的相關(guān)資料,需要的朋友可以參考下2021-12-12