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

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接