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

首頁 > 學院 > 開發設計 > 正文

gc算法

2019-11-08 18:40:57
字體:
來源:轉載
供稿:網友
1、引用計數(reference counting)    原理:此對象有一個引用,則+1;刪除一個引用,則-1。只用收集計數為0的對象。    缺點:無法處理循環引用的問題。如:對象A和B分別有字段b、a,令A.b=B和B.a=A,除此之外這2個對象再無任何引用,那實際上這2個對象已經不可能再被訪問,但是引用計數算法卻無法回收他們。 2、復制(copying)    原理:把內存空間劃分為2個相等的區域,每次只使用一個區域。垃圾回收時,遍歷當前使用區域,把正在使用的對象復制到另外一個區域。    優點:不會出現碎片問題。    缺點:1、暫停整個應用。2、需要2倍的內存空間。3、標記-清掃(Mark-and-sweep)---sun前期版本就是用這個技術。    原理:對于“活”的對象,一定可以追溯到其存活在堆棧、靜態存儲區之中的引用。這個引用鏈條可能會穿過數個對象層次。第一階段:從GC roots開始遍歷所有的引用,對有活的對象進行標記。第二階段:對堆進行遍歷,把未標記的對象進行清除。這個解決了循環引用的問題。    缺點:1、暫停整個應用;2、會產生內存碎片。4、標記-壓縮(Mark-Compact)自適應    原理:第一階段標記活的對象,第二階段把為標記的對象壓縮到堆的其中一塊,按順序放。    優點:1、避免標記掃描的碎片問題;2、避免停止復制的空間問題。        具體使用什么方法GC,java虛擬機會進行監視,如果所有對象都很穩定,垃圾回收器的效率低的話,就切換到“標記-掃描”方式;同樣,Java虛擬機會跟蹤“標記-掃描”的效果,要是堆空間碎片出現很多碎片,就會切換回“停止-復制”模式。這就是自適應的技術。5、分代(generational collecting)-----J2SE1.2以后使用此算法    原理:基于對象生命周期分析得出的垃圾回收算法。把對象分為年輕代、年老代、持久代,對不同的生命周期使用不同的算法(2-3方法中的一個即4自適應)進行回收。如上圖所示:為Java的各代分布圖年輕代(young)    分為3個區。一個Eden區,2個survivor區。大部分對象在Eden中生成。當Eden區滿時,還存活的對象將被復制到survivor區。當該survivor區滿時,此區的存活對象被復制到另外一個survivor區,當第2個survivor區也滿時,該區還存活的對象將被復制到年老區(tenured)。年老代(tenured)   存放從年輕代(young)復制過來的對象。持久代(perm)    用于存放靜態文件,如Java類、方法等。持久代對垃圾回收沒有顯著的影響,但是有些應用可能動態生成或者調用一些class。持久代大小通過-XX:MaxPermSize=N進行設置Thinking in java給java gc取了一個羅嗦的稱呼:“自適應、分代的、停止-復制、標記-掃描”式的垃圾回收器。導致Gc的情況:1、tenured被寫滿2、perm被寫滿3、System.gc()的顯式調用。4、上一次GC之后heap的各域分配策略動態變化。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闽清县| 太湖县| 兴文县| 宜君县| 榆社县| 河东区| 常德市| 辛集市| 和龙市| 靖远县| 灵山县| 灵台县| 民丰县| 德化县| 仙游县| 房产| 三江| 中江县| 宁阳县| 孙吴县| 澜沧| 永春县| 宽城| 黄骅市| 徐闻县| 南郑县| 泗洪县| 南川市| 仁寿县| 宁远县| 武鸣县| 江永县| 蒲江县| 资中县| 张家界市| 平度市| 宜兰市| 白河县| 琼中| 苍溪县| 湘乡市|