亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? java堆的管理--垃圾回收.txt

?? 含有許多JAVA的技巧!
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
Java堆的管理--垃圾回收 
(加入日期:2004-7-31 點擊數(shù):1352)
【對此文發(fā)表評論】 【編程愛好者論壇】 【保存文章至硬盤】 【打印文章】 
 
1  引言

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

2  垃圾收集的意義

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

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

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

3  垃圾收集的算法分析 

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

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

3.1  引用計數(shù)法(Reference Counting Collector)

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

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

3.2  tracing算法(Tracing Collector)

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

3.3  compacting算法(Compacting Collector)

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

3.4  coping算法(Coping Collector)

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

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

3.5  generation算法(Generational Collector)

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

3.6  adaptive算法(Adaptive Collector)

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

4  透視Java垃圾回收

4.1  命令行參數(shù)透視垃圾收集器的運行

使用System.gc()可以不管JVM使用的是哪一種垃圾回收的算法,都可以請求Java的垃圾回收。在命令行中有一個參數(shù)-verbosegc可以查看Java使用的堆內(nèi)存的情況,它的格式如下:

java -verbosegc classfile 
可以看個例子:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男女一区二区三区| 成人午夜视频网站| 丁香一区二区三区| 欧美美女网站色| 成人欧美一区二区三区黑人麻豆| 日韩精品一二三四| 91在线视频在线| 国产日韩欧美激情| 日本va欧美va精品| 欧美日韩一区在线| 成人欧美一区二区三区黑人麻豆| 激情综合色播五月| 欧美日韩欧美一区二区| 亚洲欧美国产77777| 91黄色免费观看| 久久久www成人免费无遮挡大片| 午夜精品久久久久久久蜜桃app | 日韩精品一区二区三区中文精品 | 精品区一区二区| 亚洲va欧美va天堂v国产综合| 国产a精品视频| 欧美精品一区二区三区四区| 日韩成人av影视| 精品视频1区2区| 亚洲夂夂婷婷色拍ww47| 91美女在线视频| 亚洲品质自拍视频| a4yy欧美一区二区三区| 国产精品久久免费看| 国产盗摄一区二区三区| 久久午夜免费电影| 韩国一区二区在线观看| 日韩视频免费观看高清在线视频| 偷拍一区二区三区四区| 欧美精品在线观看一区二区| 亚洲成av人片一区二区三区 | www.久久久久久久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 五月天一区二区| 欧美美女激情18p| 亚洲va在线va天堂| 日韩欧美中文一区| 国产美女精品一区二区三区| 久久天天做天天爱综合色| 国产美女一区二区三区| 国产精品丝袜久久久久久app| 成人激情免费网站| 洋洋av久久久久久久一区| 欧美日韩在线播放| 美女国产一区二区| 国产喷白浆一区二区三区| 99热99精品| 天堂精品中文字幕在线| 精品久久人人做人人爽| 成人国产一区二区三区精品| 亚洲精品免费看| 欧美一区二区在线免费播放| 国产精品资源站在线| 亚洲日穴在线视频| 日韩一区二区在线观看视频播放| 久久99精品久久久久久国产越南 | 成人性生交大合| 一区二区三区四区蜜桃| 91精品国产欧美一区二区| 国产精品一区二区久久精品爱涩 | 日韩视频一区二区三区在线播放| 国产精品亚洲午夜一区二区三区 | 视频一区二区欧美| 国产香蕉久久精品综合网| 91精品1区2区| 黄一区二区三区| 尤物在线观看一区| 精品国产免费一区二区三区香蕉| 99精品热视频| 麻豆91在线播放| 亚洲女女做受ⅹxx高潮| 精品久久五月天| 欧美午夜电影网| 国产不卡视频一区| 日本欧美一区二区三区乱码| 中文字幕一区二区三区四区| 日韩欧美一区二区久久婷婷| 色屁屁一区二区| 国产成人免费视频精品含羞草妖精 | 欧美mv日韩mv| 欧美午夜精品理论片a级按摩| 国产一区二区三区精品视频| 日韩精品一二三区| 亚洲精品乱码久久久久久日本蜜臀| 日韩欧美亚洲国产另类| 一本到高清视频免费精品| 国产一区二区剧情av在线| 日韩精品1区2区3区| 亚洲免费观看在线视频| 亚洲国产精品传媒在线观看| 欧美电视剧免费全集观看 | 欧美二区三区91| 91丨九色丨蝌蚪富婆spa| 国产精品香蕉一区二区三区| 蜜臀av一区二区在线免费观看| 亚洲五码中文字幕| 一区二区三区四区不卡视频 | 精品美女被调教视频大全网站| 欧美主播一区二区三区| 91丨国产丨九色丨pron| 成年人午夜久久久| 粉嫩一区二区三区性色av| 狠狠色狠狠色综合| 精久久久久久久久久久| 精品在线免费视频| 久久se这里有精品| 捆绑调教美女网站视频一区| 青草av.久久免费一区| 亚洲v中文字幕| 天天色天天爱天天射综合| 亚洲第一av色| 日韩和的一区二区| 美女性感视频久久| 老司机免费视频一区二区| 久久aⅴ国产欧美74aaa| 久久99国产精品久久99果冻传媒| 久久精品国产亚洲高清剧情介绍| 免费在线观看不卡| 国内精品国产三级国产a久久| 久久99国产精品成人| 国产精品自拍av| 成人av集中营| 欧美中文字幕一二三区视频| 欧美人体做爰大胆视频| 欧美精品电影在线播放| 日韩你懂的电影在线观看| 久久影院电视剧免费观看| 欧美激情中文字幕一区二区| 亚洲欧洲国产日本综合| 国产毛片精品视频| 国产成人av一区二区三区在线观看| www.av亚洲| 欧美精品少妇一区二区三区| 精品国产一区二区三区久久影院 | 欧美日韩一区不卡| 日韩精品一区国产麻豆| 欧美国产精品一区二区三区| 亚洲猫色日本管| 蜜臀国产一区二区三区在线播放| 国产成人一区在线| 在线观看91精品国产入口| 91精品国产aⅴ一区二区| 国产亚洲精品资源在线26u| 一区二区三区四区精品在线视频| 蜜臀a∨国产成人精品| av在线播放成人| 欧美一区二区成人| 亚洲人成网站在线| 日韩av高清在线观看| 成人精品在线视频观看| 7777精品伊人久久久大香线蕉最新版| 久久欧美中文字幕| 亚洲不卡一区二区三区| 国产成人精品亚洲777人妖| 欧美精品一卡二卡| 国产精品久久久久三级| 麻豆免费看一区二区三区| 99re成人精品视频| 亚洲精品在线观看视频| 夜夜操天天操亚洲| 成人激情校园春色| 精品粉嫩aⅴ一区二区三区四区| 一区二区三区在线不卡| 国产高清视频一区| 日韩欧美一级在线播放| 亚洲一区二区欧美| 99精品国产一区二区三区不卡| 精品久久久久久久久久久久包黑料| 亚洲少妇屁股交4| 国产成人a级片| 亚洲精品第1页| 成人自拍视频在线观看| 欧美不卡123| 水蜜桃久久夜色精品一区的特点 | 国产精品日韩成人| 久久超级碰视频| 51精品秘密在线观看| 亚洲综合在线五月| 91亚洲精品乱码久久久久久蜜桃| 国产亚洲福利社区一区| 久久精品国产精品亚洲综合| 欧美日本韩国一区| 亚洲国产精品久久久久婷婷884| 色婷婷综合久久久久中文 | 在线亚洲一区二区| 最新日韩av在线| av一区二区不卡| 国产精品不卡视频| 成人av小说网| 国产精品久久影院| 91视频com| 亚洲一区av在线| 欧美三区在线视频| 亚洲国产色一区| 欧美日韩精品欧美日韩精品一 |