大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 4個(gè)Java堆棧核心問題

4個(gè)Java堆棧核心問題

更新時(shí)間:2021-02-03 17:27:45 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1241次

在計(jì)算機(jī)領(lǐng)域,堆棧是一個(gè)不容忽視的概念,堆棧都是一種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在一端(稱為棧頂(top))對(duì)數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除。在單片機(jī)應(yīng)用中,堆棧是個(gè)特殊的存儲(chǔ)區(qū),主要功能是暫時(shí)存放數(shù)據(jù)和地址,通常用來保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。堆棧的學(xué)習(xí)我們需要抓住核心問題,這樣我們才能以點(diǎn)帶面,學(xué)好整個(gè)堆棧。本文我們就來介紹4個(gè)Java堆棧核心問題。

1、在通常情況下由操作系統(tǒng)(OS)和語言的運(yùn)行時(shí)(runtime)控制嗎?

如前所述,堆和棧是一個(gè)統(tǒng)稱,可以有很多的實(shí)現(xiàn)方式。計(jì)算機(jī)程序通常有一個(gè)棧叫做調(diào)用棧,用來存儲(chǔ)當(dāng)前函數(shù)調(diào)用相關(guān)的信息(比如:主調(diào)函數(shù)的地址,局部變量),因?yàn)楹瘮?shù)調(diào)用之后需要返回給主調(diào)函數(shù)。棧通過擴(kuò)展和收縮來承載信息。實(shí)際上,程序不是由運(yùn)行時(shí)來控制的,它由編程語言、操作系統(tǒng)甚至是系統(tǒng)架構(gòu)來決定。 堆是在任何內(nèi)存中動(dòng)態(tài)和隨機(jī)分配的(內(nèi)存的)統(tǒng)稱;也就是無序的。內(nèi)存通常由操作系統(tǒng)分配,通過應(yīng)用程序調(diào)用 API 接口去實(shí)現(xiàn)分配。在管理動(dòng)態(tài)分配內(nèi)存上會(huì)有一些額外的開銷,不過這由操作系統(tǒng)來處理。

2、堆棧的作用范圍是什么?

調(diào)用棧是一個(gè)低層次的概念,就程序而言,它和“作用范圍”沒什么關(guān)系。如果你反匯編一些代碼,你就會(huì)看到指針引用堆棧部分。就高級(jí)語言而言,語言有它自己的范圍規(guī)則。一旦函數(shù)返回,函數(shù)中的局部變量會(huì)直接直接釋放。你的編程語言就是依據(jù)這個(gè)工作的。

在堆中,也很難去定義。作用范圍是由操作系統(tǒng)限定的,但是你的編程語言可能增加它自己的一些規(guī)則,去限定堆在應(yīng)用程序中的范圍。體系架構(gòu)和操作系統(tǒng)是使用虛擬地址的,然后由處理器翻譯到實(shí)際的物理地址中,還有頁(yè)面錯(cuò)誤等等。它們記錄那個(gè)頁(yè)面屬于那個(gè)應(yīng)用程序。不過你不用關(guān)心這些,因?yàn)槟銉H僅在你的編程語言中分配和釋放內(nèi)存,和一些錯(cuò)誤檢查(出現(xiàn)分配失敗和釋放失敗的原因)。

3、堆棧的大小由什么決定?

依舊,依賴于語言,編譯器,操作系統(tǒng)和架構(gòu)。棧通常提前分配好了,因?yàn)闂1仨毷沁B續(xù)的內(nèi)存塊。語言的編譯器或者操作系統(tǒng)決定它的大小。不要在棧上存儲(chǔ)大塊數(shù)據(jù),這樣可以保證有足夠的空間不會(huì)溢出,除非出現(xiàn)了無限遞歸的情況(額,棧溢出了)或者其它不常見了編程決議。

堆是任何可以動(dòng)態(tài)分配的內(nèi)存的統(tǒng)稱。這要看你怎么看待它了,它的大小是變動(dòng)的。在現(xiàn)代處理器中和操作系統(tǒng)的工作方式是高度抽象的,因此你在正常情況下不需要擔(dān)心它實(shí)際的大小,除非你必須要使用你還沒有分配的內(nèi)存或者已經(jīng)釋放了的內(nèi)存。

4、堆和棧哪個(gè)更快一些?

棧更快因?yàn)樗械目臻e內(nèi)存都是連續(xù)的,因此不需要對(duì)空閑內(nèi)存塊通過列表來維護(hù)。只是一個(gè)簡(jiǎn)單的指向當(dāng)前棧頂?shù)闹羔?。編譯器通常用一個(gè)專門的、快速的寄存器來實(shí)現(xiàn)。更重要的一點(diǎn)事是,隨后的棧上操作通常集中在一個(gè)內(nèi)存塊的附近,這樣的話有利于處理器的高速訪問。

以上就是關(guān)于4個(gè)Java堆棧核心問題的講解,棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),堆可以被看成是一棵樹,如:堆排序。在Java中,棧與堆都是Java用來在Ram中存放數(shù)據(jù)的地方,所以,堆棧在很多地方都有相似之處,這也是我們把堆和棧放在一起的原因。想要學(xué)好堆棧,光靠這幾個(gè)核心問題是遠(yuǎn)遠(yuǎn)不夠的,在本站的數(shù)據(jù)結(jié)構(gòu)和算法教程中有著堆棧的全面解析,感興趣的小伙伴可以前去學(xué)習(xí)。

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久亚洲国产精品五月天 | 狠狠干天天干 | 四虎成人影视 | 亚洲成在人网站天堂一区二区 | 国产一级特黄aa级特黄裸毛片 | 97在线观看中心 | 亚洲成人伊人网 | 国产精自产拍久久久久久蜜 | 爆操白虎| 麻豆日韩 | 久久久国产视频 | 调教师鞭打总裁奴男男 | 一区二区三区亚洲 | 天天骑天天干 | 四虎精品在线 | 久草久草 | 久久国产亚洲欧美日韩精品 | 国产男女在线观看 | 毛片免 | 中文字幕在线视频免费观看 | 免费男女网站 | 国产蜜汁tv福利在线 | 免费网站毛片 | 91精品综合久久久久3d动漫 | 99国产精品久久久久久久日本 | 日韩在线观看一区二区三区 | 在线观看国产情趣免费视频 | 久久美女精品 | 成人毛片网站 | 四虎b7s22c0m| 99人中文字幕亚洲区 | 成人免费高清 | 久久只有精品 | 国产精品一区二区久久不卡 | 久久免费观看爱情动作片 | 欧美性天天影院 | 伊人婷婷色香五月综合缴缴情 | 毛片视| 亚洲va国产日韩欧美精品色婷婷 | 日本免费新一区二区三区 | 国产精品一区二区三区免费视频 |