国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

內(nèi)存分配

2019-11-10 20:13:47
字體:
供稿:網(wǎng)友

java為對(duì)象分配空間的任務(wù)等同于把一塊確定大小的內(nèi)存從Java堆里面劃分出來。

假設(shè)Java堆中內(nèi)存是絕對(duì)的規(guī)整的,所有用過的內(nèi)存都放在一遍,空閑的內(nèi)存放在另一邊,中間放著一個(gè)指針作為分界點(diǎn)的指示器,那所分配內(nèi)存就僅僅是把那個(gè)指針向空閑空間那邊挪動(dòng)一段與對(duì)象大小相等的距離,這種分配方式稱為指針碰撞。假設(shè)Java堆中的內(nèi)存并不是規(guī)整的,已使用的內(nèi)存和空閑的內(nèi)存相互交錯(cuò),那么就沒有辦法簡(jiǎn)單的進(jìn)行指針碰撞,虛擬機(jī)就必須維護(hù)一個(gè)列表,記錄上哪些內(nèi)存塊是可用的,在分配的時(shí)候從列表中找到一個(gè)足夠大的空間劃分給對(duì)象實(shí)例,并更新列表上的記錄,這種分配方式稱為空閑列表。

除了劃分可用空間外,還有另外一個(gè)需要考慮的問題是并發(fā)分配內(nèi)存,即使是修改一個(gè)指針的位置,也不是線程安全的。

解決方案一:對(duì)分配的內(nèi)存空間的動(dòng)作進(jìn)行同步處理。實(shí)際上虛擬機(jī)采用CAS配上失敗重試的方式保證更新操作的原子性。解決方案二:把內(nèi)存分配的動(dòng)作按照線程劃分在不同的空間之中進(jìn)行,即每個(gè)線程在Java堆中預(yù)先分配一小塊內(nèi)存,即本地線程分配緩沖(Thread Local Allocation Buffer,TLAB),哪個(gè)線程要分配內(nèi)存,就在哪個(gè)線程的TLAB上分配,只有TLAB用完并分配新的TLAB時(shí),才需要同步鎖定,。虛擬機(jī)是否使用TLAB,可以通過-XX:+/-UseTLAB參數(shù)來設(shè)定。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大田县| 仪征市| 枞阳县| 石嘴山市| 宁远县| 高安市| 汉阴县| 大安市| 民和| 霞浦县| 丹棱县| 宁河县| 昌平区| 漠河县| 佛坪县| 眉山市| 永康市| 淮北市| 庄河市| 墨玉县| 鄂州市| 东阿县| 清水河县| 鸡东县| 章丘市| 夏河县| 灵璧县| 溧水县| 瓮安县| 渝中区| 娄底市| 靖宇县| 宁波市| 瑞昌市| 镇远县| 安仁县| 南和县| 东安县| 北碚区| 禄劝| 铁力市|