大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 在线精品自拍 | 日日摸日日碰夜夜爽久久 | 欧美乱大交xxxxx另类 | 99热婷婷| 男人的天堂一区二区视频在线观看 | 亚洲五月色 | 网络毛片| 国产精品一国产精品免费 | 亚洲123区 | 美欧毛片| 91伊人久久 | 九热视频| 午夜激情婷婷 | 人成精品视频三区二区一区 | 久草青青在线视频 | 成人免费观看视频久爱网 | 国产女人综合久久精品视 | 国产美女激情视频 | 视频一区国产精品 | www.婷婷| 男人的天堂在线精品视频 | 亚洲国产成人资源在线软件 | 成人毛片一区二区三区 | 久久久国产99久久国产久 | 久久精品视频在线播放 | 久草在在线视频 | 久热网| 亚洲男人的天堂久久香蕉 | 日韩香蕉网 | 国产成人永久免费视 | 亚洲欧美精品中字久久99 | 欧美日韩一区二区不卡三区 | 奇米网色 | 日韩欧美伊人久久大香线蕉 | 久久精品国产亚洲 | 国产欧美精品三区 | 美国一级毛片片aa久久综合 | 老司机观看精品一区二区 | 日韩欧美成末人一区二区三区 | 成人网久久| 欧美国产日韩911在线观看 |