亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

全面分析Java的垃圾回收機制

2019-11-18 15:41:47
字體:
來源:轉載
供稿:網友
引言

  java的堆是一個運行時數據區,類的實例(對象)從中分配空間。Java虛擬機(JVM)的堆中儲存著正在運行的應用程序所建立的所有對象,這些對象通過new、newarray、anewarray和multianewarray等指令建立,但是它們不需要程序代碼來顯式地釋放。
一般來說,堆的是由垃圾回收 來負責的,盡管JVM規范并不要求非凡的垃圾回收技術,甚至根本就不需要垃圾回收,但是由于內存的有限性,JVM在實現的時候都有一個由垃圾回收所治理的堆。垃圾回收是一種動態存儲治理技術,它自動地釋放不再被程序引用的對象,按照特定的垃圾收集算法來實現資源自動回收的功能。

  垃圾收集的意義

  在C++中,對象所占的內存在程序結束運行之前一直被占用,在明確釋放之前不能分配給其它對象;而在Java中,當沒有對象引用指向原先分配給某個對象的內存時,該內存便成為垃圾。JVM的一個系統級線程會自動釋放該內存塊。垃圾收集意味著程序不再需要的對象是"無用信息",這些信息將被丟棄。當一個對象不再被引用的時候,內存回收它占領的空間,以便空間被后來的新對象使用。事實上,除了釋放沒用的對象,垃圾收集也可以清除內存記錄碎片。由于創建對象和垃圾收集器釋放丟棄對象所占的內存空間,內存會出現碎片。碎片是分配給對象的內存塊之間的空閑內存洞。碎片整理將所占用的堆內存移到堆的一端,JVM將整理出的內存分配給新的對象。

  垃圾收集能自動釋放內存空間,減輕編程的負擔。這使Java 虛擬機具有一些優點。首先,它能使編程效率提高。在沒有垃圾收集機制的時候,可能要花許多時間來解決一個難懂的存儲器問題。在用Java語言編程的時候,靠垃圾收集機制可大大縮短時間。其次是它保護程序的完整性, 垃圾收集是Java語言安全性策略的一個重要部份。

  垃圾收集的一個潛在的缺點是它的開銷影響程序性能。Java虛擬機必須追蹤運行程序中有用的對象, 而且最終釋放沒用的對象。這一個過程需要花費處理器的時間。其次垃圾收集算法的不完備性,早先采用的某些垃圾收集算法就不能保證100%收集到所有的廢棄內存。當然隨著垃圾收集算法的不斷改進以及軟硬件運行效率的不斷提升,這些問題都可以迎刃而解。

  垃圾收集的算法分析

  Java語言規范沒有明確地說明JVM使用哪種垃圾回收算法,但是任何一種垃圾收集算法一般要做2件基本的事情:(1)發現無用信息對象;(2)回收被無用對象占用的內存空間,使該空間可被程序再次使用。

  大多數垃圾回收算法使用了根集(root set)這個概念;所謂根集就量正在執行的Java程序可以訪問的引用變量的集合(包括局部變量、參數、類變量),程序可以使用引用變量訪問對象的屬性和調用對象的方法。垃圾收集首選需要確定從根開始哪些是可達的和哪些是不可達的,從根集可達的對象都是活動對象,它們不能作為垃圾被回收,這也包括從根集間接可達的對象。而根集通過任意路徑不可達的對象符合垃圾收集的條件,應該被回收。下面介紹幾個常用的算法。

  1、 引用計數法(Reference Counting Collector)

  引用計數法是唯一沒有使用根集的垃圾回收的法,該算法使用引用計數器來區分存活對象和不再使用的對象。一般來說,堆中的每個對象對應一個引用計數器。當每一次創建一個對象并賦給一個變量時,引用計數器置為1。當對象被賦給任意變量時,引用計數器每次加1當對象出了作用域后(該對象丟棄不再使用),引用計數器減1,一旦引用計數器為0,對象就滿足了垃圾收集的條件。

  基于引用計數器的垃圾收集器運行較快,不會長時間中斷程序執行,適宜地必須 實時運行的程序。但引用計數器增加了程序執行的開銷,因為每次對象賦給新的變量,計數器加1,而每次現有對象出了作用域生,計數器減1。

  2、tracing算法(Tracing Collector)

  tracing算法是為了解決引用計數法的問題而提出,它使用了根集的概念?;趖racing算法的垃圾收集器從根集開始掃描,識別出哪些對象可達,哪些對象不可達,并用某種方式標記可達對象,例如對每個可達對象設置一個或多個位。在掃描識別過程中,基于tracing算法的垃圾收集也稱為標記和清除(mark-and-sweep)垃圾收集器.

  3、compacting算法(Compacting Collector)

  為了解決堆碎片問題,基于tracing的垃圾回收吸收了Compacting算法的思想,在清除的過程中,算法將所有的對象移到堆的一端,堆的另一端就變成了一個相鄰的空閑內存區,收集器會對它移動的所有對象的所有引用進行更新,使得這些引用在新的位置能識別原來 的對象。在基于Compacting算法的收集器的實現中,一般增加句柄和句柄表。  

  4、copying算法(Coping Collector)

  該算法的提出是為了克服句柄的開銷和解決堆碎片的垃圾回收。它開始時把堆分成 一個對象 面和多個空閑面, 程序從對象面為對象分配空間,當對象滿了,基于coping算法的垃圾 收集就從根集中掃描活動對象,并將每個 活動對象復制到空閑面(使得活動對象所占的內存之間沒有空閑洞),這樣空閑面變成了對象面,原來的對象面變成了空閑面,程序會在新的對象面中分配內存。

  一種典型的基于coping算法的垃圾回收是stop-and-copy算法,它將堆分成對象面和空閑區域面,在對象面與空閑區域面的切換過程中,程序暫停執行。

  5、generation算法(Generational Collector)

  stop-and-copy垃圾收集器的一個缺陷是收集器必須復制所有的活動對象,這增加了程序等待時間,這是coping算法低效的原因。在程序設計中有這樣的規律:多數對象存在的時間比較短,少數的存在時間比較長。因此,generation算法將堆分成兩個或多個,每個子堆作為對象的一代(generation)。由于多數對象存在的時間比較短,隨著程序丟棄不使用的對象,垃圾收集器將從最年輕的子堆中收集這些對象。在分代式的垃圾收集器運行后,上次運行存活下來的對象移到下一最高代的子堆中,由于老一代的子堆不會經常被回收,因而節省了時間。

  6、adaptive算法(Adaptive Collector)

  在特定的情況下,一些垃圾收集算法會優于其它算法?;贏daptive算法的垃圾收集器就是監控當前堆的使用情況,并將選擇適當算法的垃圾收集器。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久国产| 精品少妇一区二区30p| 国产在线精品成人一区二区三区| 一二美女精品欧洲| 欧美日韩激情视频| 色爱精品视频一区| 欧美亚洲另类激情另类| 中文字幕日韩欧美在线视频| 亚洲精品国产精品国自产在线| 欧美成人中文字幕在线| 国产精品欧美激情| 国产精品www| 日本精品久久久久久久| 欧美成人剧情片在线观看| 色在人av网站天堂精品| 亚洲第一天堂无码专区| 中文欧美在线视频| 国产精品一区二区电影| 日韩电影中文字幕| 亚洲一区二区久久久| 日韩精品中文字幕视频在线| 国产激情久久久久| 精品欧美一区二区三区| 精品亚洲一区二区三区| 成人做爰www免费看视频网站| 成人午夜黄色影院| 国产精品视频久| 国产精品福利在线观看网址| 精品美女国产在线| 午夜欧美不卡精品aaaaa| 毛片精品免费在线观看| 日韩精品视频在线观看网址| 91亚洲一区精品| 久操成人在线视频| 狠狠色香婷婷久久亚洲精品| 欧美一区二区三区四区在线| 日韩网站免费观看| 欧美国产日产韩国视频| 欧美激情极品视频| 国产区精品视频| 色偷偷偷综合中文字幕;dd| 亚洲精品狠狠操| 亚洲国产女人aaa毛片在线| 久久人人爽人人爽人人片亚洲| 久久69精品久久久久久国产越南| 欧美在线视频在线播放完整版免费观看| 欧美劲爆第一页| 久久九九精品99国产精品| 欧美午夜视频一区二区| 国产精品夜色7777狼人| 亚洲天堂网站在线观看视频| 亚洲最大成人免费视频| 亚洲男人的天堂在线| 亚洲第一视频网站| 日韩欧美国产一区二区| 欧美激情免费观看| 九九热在线精品视频| 久久久久国产精品一区| 国产精品成av人在线视午夜片| 日韩视频第一页| 亚洲精品国产精品自产a区红杏吧| 亚洲精选中文字幕| 久久久国产一区二区三区| 国产成人久久久精品一区| 国产精品久久久久久久久久尿| 日韩成人在线播放| 国产精品香蕉国产| 欧美精品亚州精品| 国产aaa精品| 国产精品永久免费视频| 91久久精品国产91久久性色| 一本色道久久88综合日韩精品| 日韩免费观看在线观看| 大桥未久av一区二区三区| 欧美成在线视频| 日本中文字幕成人| 日韩av影片在线观看| 黑人巨大精品欧美一区免费视频| 一本色道久久88综合亚洲精品ⅰ| 欧美放荡办公室videos4k| 久久久久国产精品免费网站| 日韩电影中文 亚洲精品乱码| 国产精品久久久久7777婷婷| 成人xxxxx| 国产日韩欧美在线播放| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美一区二区精品久久久| 欧美人成在线视频| 美女999久久久精品视频| 日韩亚洲精品视频| 久久频这里精品99香蕉| 九九久久综合网站| 亚洲国产精品大全| 日韩毛片在线看| 全球成人中文在线| 日韩精品中文字幕在线播放| 久久九九亚洲综合| 国产日韩精品在线| 欧美贵妇videos办公室| 亚洲片国产一区一级在线观看| 91国偷自产一区二区三区的观看方式| 亚洲福利影片在线| 米奇精品一区二区三区在线观看| 欧美二区乱c黑人| 日韩亚洲欧美中文高清在线| 91欧美精品午夜性色福利在线| 久久久久国产精品一区| 日韩视频在线免费观看| 亚洲久久久久久久久久久| 亚洲一区二区精品| 久久97久久97精品免视看| 日韩av片免费在线观看| 色综合男人天堂| 国产综合在线视频| 欧美伊久线香蕉线新在线| 欧美—级高清免费播放| 国产一区二区三区高清在线观看| 日产精品99久久久久久| 欧美性理论片在线观看片免费| 欧美精品18videosex性欧美| 欧美精品在线网站| 久久躁日日躁aaaaxxxx| 北条麻妃一区二区在线观看| 91免费在线视频| 日韩欧美在线第一页| 国产成人高潮免费观看精品| 欧美一级淫片丝袜脚交| 国产精品高潮呻吟视频| 久久视频在线视频| 亚洲美女福利视频网站| 国产成人一区二区三区电影| 亚洲乱码国产乱码精品精天堂| 中文字幕亚洲欧美日韩2019| 国产精品∨欧美精品v日韩精品| 国产精品网红直播| 国产亚洲精品91在线| 欧美成人免费一级人片100| 欧美丝袜第一区| 亚洲男人天堂2024| www.亚洲成人| 日韩欧美亚洲一二三区| 91中文在线视频| 精品国偷自产在线| 国产69久久精品成人看| 国产精品视频26uuu| 色噜噜国产精品视频一区二区| 一区二区三区亚洲| 粉嫩av一区二区三区免费野| 亚洲精品日韩激情在线电影| 麻豆国产va免费精品高清在线| 国产精品久久久久久久9999| 成人在线播放av| 国产精品美女免费看| 国产精品精品一区二区三区午夜版| 黑人精品xxx一区| 中文字幕日韩电影| 日韩av中文字幕在线免费观看| 日韩极品精品视频免费观看| 国产精品久久久久999| 精品日韩美女的视频高清| 国产精品久久久久久久久久99| 日韩小视频网址| 久久亚洲精品国产亚洲老地址| 成人免费自拍视频|