導航:首頁 > 編程語言 > 堆棧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相關的資料

熱點內容
js讀取伺服器cookie 瀏覽:721
什麼編程可以控制瀏覽器 瀏覽:277
微信文愛聊天截圖圖片 瀏覽:427
糖果小號密碼查看工具 瀏覽:191
pm一般做什麼編程 瀏覽:937
linux共享文件給mac 瀏覽:428
ps另存為時找不到文件 瀏覽:818
iphone6s朋友圈視頻沒聲音 瀏覽:728
win10系統工具文件夾 瀏覽:862
微信扔出去的怎樣找回來 瀏覽:744
編程怎麼錄視頻 瀏覽:470
東方財富app解套率怎麼計算 瀏覽:74
win10系統為excel文件在哪裡 瀏覽:578
字幕文件哪個網站下載 瀏覽:745
app怎麼推廣推廣 瀏覽:674
小鳥壁紙哪個文件夾刪不掉 瀏覽:419
閨蜜圈app怎麼樣 瀏覽:931
新版天貓app如何查看詳情 瀏覽:390
sql資料庫同步 瀏覽:492
網路面板線錯了怎麼辦 瀏覽:343

友情鏈接