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

溫馨提示×

溫馨提示×

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

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

Java系統的堆和棧介紹

發布時間:2020-05-28 11:47:27 來源:億速云 閱讀:216 作者:Leah 欄目:編程語言

Java系統的堆和棧是什么?很多人知道堆和棧但對Java系統的堆和棧的了解處于一知半解狀態,小編給大家總結了這篇文章,希望你能深刻理解Java系統的堆和棧。

1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。
2、堆區(heap)— 是一個可動態申請的內存空間(其記錄空閑內存空間的鏈表由操作系統維護),在java中,所有使用new xxx()構造出來的對象都在堆中存儲一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表。
堆是全局的,堆棧是每個函數進入的時候分一小塊,函數返回的時候就釋放了,靜態和全局變量,new得到的變量,都放在堆中,局部變量放在棧中,所以函數返回,局部變量就全沒了

棧(stack)與堆(heap)都是Java用來在Ram中存放數據的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。

  1. 棧的優勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。另外,棧數據可以共享,詳見第3點。
    堆(可以共享)的優勢是可以動態地分配內存大小,所有使用new xxx()構造出來的對象都在堆中存儲,生存期也不必事先告訴編譯器,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由于要在運行時動態分配內存,存取速度較慢。

  2. 常量池:存放字符串常量和基本類型常量(public static final)。
    常量池的好處是為了避免頻繁的創建和銷毀對象而影響系統性能,其實現了對象的共享。
    例如字符串常量池,在編譯階段就把所有的字符串文字放到一個常量池中。(1)節省內存空間:常量池中所有相同的字符串常量被合并,只占用一個空間。(2)節省運行時間:比較字符串時,==比equals()快。對于兩個引用變量,只用==判斷引用是否相等,也就可以判斷實際值是否相等。

如Integer, String, Double等將相應的基本數據類型包裝起來的類。這些類數據全部存在于堆中,Java用new()語句來顯示地告訴編譯器,在運行時才根據需要動態創建,因此比較靈活,但缺點是要占用更多的時間。

以上就是Java系統的堆和棧的詳細介紹了,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎關注億速云行業資訊!

向AI問一下細節

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

AI

广河县| 象山县| 宝山区| 民乐县| 民勤县| 永顺县| 确山县| 侯马市| 湘潭市| 安阳县| 武宣县| 澎湖县| 凤台县| 长乐市| 柘荣县| 平昌县| 堆龙德庆县| 罗定市| 叙永县| 安龙县| 册亨县| 静宁县| 台前县| 上杭县| 江都市| 精河县| 陆河县| 南平市| 岱山县| 措勤县| 巴林左旗| 尖扎县| 惠安县| 娱乐| 左云县| 班戈县| 承德县| 如东县| 思南县| 略阳县| 固阳县|