北大青鳥北京通州校區(qū):Java虛擬機介紹

      文章來自北大青鳥北京通州校區(qū)學(xué)術(shù)部老師:

      Java程序在運行時創(chuàng)建的所有類實例或數(shù)組都放在同一個堆中。而一個Java虛擬機實例中只有一個堆空間,因此所有線程都將共享這個堆。由于一個Java程序獨占一個Java虛擬機實例,因而每個Java程序都有自己的堆空間。

      Java虛擬機有一條在堆中分配新對象的指令,卻沒有釋放內(nèi)存的指令,正如你無法用Java代碼去明確釋放一個對象一樣,字節(jié)碼指令也沒有對應(yīng)的功能。虛擬機自己負責(zé)決定如何已經(jīng)合適釋放不在被運行的程序引用的對象所占據(jù)的內(nèi)存。程序本身不用去考慮何時需要回收對象所占用的內(nèi)存,通常,虛擬機把這個任務(wù)交給垃圾收集器。(北大青鳥北京通州校區(qū),軟件技術(shù)培訓(xùn))

      垃圾回收

      垃圾收集器的主要工作是自動回收不在被運行的程序所引用的對象所占用的內(nèi)存。此外,它也可能去移動那些還在使用的對象,以此減少堆碎片。

      對象內(nèi)部表示

      Java對象中包含的基本數(shù)據(jù)由它所屬的類及其所有超類聲明的實例變量組成。只有有一個對象引用,虛擬機就必須能夠快速定位對象實例的數(shù)據(jù)。另外,它必須能通過該對象引用訪問相應(yīng)的類數(shù)據(jù)(存儲于方法區(qū)的類型信息),在對象中通常有一個指向方法區(qū)的指針。

      對象引用可認為是一個本地指針。通過某種策略可由該指針找到實例數(shù)據(jù)以及class data。

      有如下幾個理由要求虛擬機必須能夠通過對象引用得到類數(shù)據(jù)(class data):

      1. 當(dāng)程序在運行時需要轉(zhuǎn)換某個對象引用為另一種類型,虛擬機必須能檢查這種轉(zhuǎn)換是否被允許。被轉(zhuǎn)換的對象是否的確是被引用的對象或它的超類。

      2. 當(dāng)程序執(zhí)行 instanceof操作時,虛擬機也進行了同樣的檢查。(北大青鳥北京通州校區(qū),軟件技術(shù)培訓(xùn))

      3. 在程序中調(diào)用某個實例方法時,虛擬機必須進行動態(tài)綁定。不能按照引用的類型(type of reference),而是按照對象的實際類。

      因此,虛擬機必須再次通過對象的引用去訪問類數(shù)據(jù)。

      北大青鳥北京通州校區(qū)

      北大青鳥網(wǎng)上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 国产精华液一区二区区别大吗| 国产一区二区三区乱码| 一区二区三区电影网| 中文字幕一区二区三区在线观看| 国产成人一区二区三区精品久久| 99精品国产高清一区二区| 日韩AV无码一区二区三区不卡毛片| 日韩在线视频一区| 人妻少妇精品视频三区二区一区| 无码人妻精品一区二区三18禁| www亚洲精品少妇裸乳一区二区 | 在线观看日本亚洲一区| 国产成人精品视频一区二区不卡| 美女免费视频一区二区三区| 久热国产精品视频一区二区三区 | 在线观看精品视频一区二区三区 | 偷拍精品视频一区二区三区| 日韩精品中文字幕视频一区| 亚洲A∨精品一区二区三区下载| 无码欧精品亚洲日韩一区| 国内偷窥一区二区三区视频| 制服中文字幕一区二区 | 久久久国产精品亚洲一区| 中文字幕VA一区二区三区| 中文字幕一区二区在线播放| 中文字幕在线观看一区 | 成人免费视频一区二区三区 | 中文字幕日本精品一区二区三区 | 国产精品一级香蕉一区| 亚洲国产精品一区二区三区在线观看 | 精品无码一区二区三区电影| 中文字幕一区在线观看| 国产一区二区三区在线2021| 久久99精品国产一区二区三区 | 蜜臀AV免费一区二区三区| 在线观看日本亚洲一区| 日本一区二区三区四区视频| 日韩在线视频一区| 国产免费一区二区三区免费视频| 国产午夜精品一区二区| 日本内射精品一区二区视频|