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

溫馨提示×

溫馨提示×

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

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

java棧與堆是什么

發布時間:2022-01-06 15:52:19 來源:億速云 閱讀:183 作者:iii 欄目:大數據

本篇內容介紹了“java棧與堆是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

所有的java程序在運行時,都要在內存中開辟一個空間,并且在JVM(java虛擬機)運行的時候,會分得更加的細致,虛擬機中每一片內存的處理方式都是不一樣的,所以需要進行單獨的管理。

JVM的內存一共分為5種:

寄存器,本地方法區,方法區,堆內存,棧內存

今天我們主要講堆內存與棧內存。

棧內存

棧內存主要儲存的是局部變量,也就是說,是定義在方法之內的,都叫局部變量。線程執行的時候調用方法的內存模型,當方法執行的時候,會創建一個叫“棧幀”的內存結構,棧幀會儲存該方法內用到的局部變量表,操作數棧、返回地址、動態連接等信息。(這里新手主要了解局部變量表與返回地址就好了,局部變量表顧名思義是用來儲存局部變量的,方法返回地址,是指方法在運行過程中,可能會正常退出,也可能會異常退出,但是不管哪種退出方式,都要讓調用者知道方法退出的位置,方法返回地址就是用來確定退出位置的。)一個方法從方法被調用開始,到方法執行結束,就是一個棧幀在java棧中從入棧到出棧的全過程。

堆內存

堆內存儲存的是對象,也就是new出來的都在堆里,堆中存放的都是實體(對象),實體用于封裝數據,而且是封裝多個(實體的多個屬性),如果一個數據消失,這個實體也沒有消失,還可以用,所以堆是不會隨時釋放的,但是棧不一樣,棧里存放的都是單個變量,變量被釋放了,那就沒有了。堆里的實體雖然不會被釋放,但是會被當成垃圾,Java有垃圾回收機制不定時的收取。

通俗一點說堆和棧的區別:堆主要用來存放對象的,棧主要用來執行程序的。

那么棧和堆有什么不同呢,我們可以從幾個方面看待他們的不同!

        順序

    棧是先進后出,堆是先進先出

緩存

    棧使用的是一級緩存, 他們通常都是被調用時處于存儲空間中,調用完畢立即釋放;

    堆是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調用這些對象的速度要相對來得低一些。

內存回收:

    棧內存存放的變量生命周期一旦結束就會被釋放,而堆內存存放的實體會被垃圾回收機制不定時的回收。

申請效率:

    棧:由系統自己分配,速度較快,但是程序員無法掌握。

    堆:一般有兩種方法來申請內存,new和malloc,new是一種用算符而malloc是函數。由程序員申請出來的內存一般速度比較慢,而卻容易產生內存碎片,不過用起來比較方便,獲取的空間大,也相對較靈活。

“java棧與堆是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

郸城县| 清河县| 临泉县| 额尔古纳市| 赤城县| 南雄市| 汕头市| 和林格尔县| 历史| 阳江市| 鄂托克前旗| 囊谦县| 禹城市| 韩城市| 凌源市| 荥阳市| 孟州市| 荔波县| 韶关市| 辉县市| 舟山市| 海盐县| 泰来县| 津南区| 永靖县| 青川县| 丰顺县| 友谊县| 井研县| 宁安市| 美姑县| 肇州县| 册亨县| 临西县| 新野县| 南投市| 兰西县| 千阳县| 东丽区| 黄骅市| 双鸭山市|