導航:首頁 > 編程語言 > 堆棧java

堆棧java

發布時間:2023-12-05 20:27:49

① 如何理解java虛擬機棧

堆是堆(heap),棧是棧(stack),堆棧是棧。

棧中分配的是基本類型和自定義對象的引用。

堆中分配的是對象,也就是new出來的東西。 被所有線程共享。

方法區/靜態區 存放的是類信息和static變數、常量。 被所有線程共享。

也可以這么理解:堆是用來存放對象的,棧是用來運行程序的。

堆:java的垃圾回收器會自動的回收這些不用的數據。缺點是由於要動態的分配內存,存儲效率會比較的慢。

棧:棧的優勢是存取效率比較快,僅次於寄存器,棧數據可以共享。但缺點是棧中的數據大小和生存期的固定的,缺乏靈活性。

一般每個方法的調用都會獨立有一個棧來保存對象的引用變數,在方法返回後,棧會清空,當在一段代碼塊定義一個變數時,Java就在棧中為這個變數分配內存空間,當超過變數的作用域後,Java會自動釋放掉為該變數所分配的內存空間,該內存空間可以立即被另作他用。

以32位地址操作系統為例,一個進程可擁有的虛擬內存地址范圍為0-2^32。分為兩部分,一部分留給kernel使用(kernel virtual memory),剩下的是進程本身使用, 即圖中的process virtual memory。

一個程序本質上都是由bss段、data段、text段三個組成的

bss段(Block Started by Symbol segment)通常是指用來存放程序中未初始化的全局變數的一塊內存區域,一般在初始化時bss 段部分將會清零。bss段屬於靜態內存分配,即程序一開始就將其清零了。

在C語言之類的程序編譯完成之後,已初始化的全局變數保存在.data 段中,未初始化的全局變數保存在.bss 段中。

text和data段都在可執行文件中(在嵌入式系統里一般是固化在鏡像文件中),由系統從可執行文件中載入;而bss段不在可執行文件中,由系統初始化。

閱讀全文

與堆棧java相關的資料

熱點內容
電腦沒聯網怎麼拷貝文件 瀏覽:224
wps工具欄怎麼換成中文 瀏覽:338
win7和xp共享文件 瀏覽:883
蘋果4代音量鍵沒反應 瀏覽:827
怎樣打開tif文件 瀏覽:153
java下載文件zip 瀏覽:440
qq瀏覽器壓縮文件怎麼設密碼 瀏覽:526
黃埔數控編程哪裡好 瀏覽:406
mac109升級1010 瀏覽:691
在java的菜單如何導入文件 瀏覽:982
現在什麼網站銷量最高 瀏覽:760
angularjsclass定義 瀏覽:157
ug數控編程怎麼導出程序 瀏覽:466
cmdb文件 瀏覽:710
鵯文件夾 瀏覽:763
網路輿情應對的基本理念是什麼 瀏覽:433
word2007層次結構 瀏覽:456
去掉文件名的數字 瀏覽:713
word公司 瀏覽:710
淘寶店數據包怎麼上傳 瀏覽:341

友情鏈接