国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 来凤县| 额敏县| 平凉市| 余姚市| 洪湖市| 南京市| 普洱| 太康县| 南郑县| 颍上县| 阿克苏市| 桐乡市| 汉川市| 石门县| 六盘水市| 台湾省| 且末县| 嵩明县| 淮北市| 呼伦贝尔市| 晋中市| 长顺县| 郎溪县| 武邑县| 安溪县| 天长市| 潼南县| 彩票| 高州市| 论坛| 财经| 临夏市| 台东县| 扎鲁特旗| 福泉市| 自贡市| 六枝特区| 栾城县| 航空| 铜鼓县| 崇义县|