P於GC

如前所f,Java程式绦兴俣嚷闹饕颍饕怯伸叮牵玫拇嬖冢

先v概念堆(Heap)和#ǎ樱簦幔悖耄押6际谴Ψ绞
堆就是堆;>褪
堆:Java 程式的物件生活的地方,包含活的物件,死的物件以及剩Nw。是分配ο蟠臻g的地方(分配空g由解器承僬f一句:解器在橐例分配完存臻g後,便_始υ例所子玫挠w^域的使用。一旦物件使用完,便⑵浠厥盏蕉阎小
#河嘘P5恼Z言在上一篇中已提^.
f明一下由於堆不象J沁Bm的空g,所以硭俣炔豢赡芟R

由上面所f,我就可能.
1. l碚矶阎械热荩员阕你乎]有延t的堆中@的空g呢.
其@r候GC就站了出恚牵玫挠锰簿驮诖吮惑wF.然GC除了用砬宄w垃圾之外,有一作用:(模M出一=Y)整理堆中的物件,把它D移到一hxGarbage的Q空g中og隔的排列起,就象V幸泳o,橄乱需要分配的ο笾敢较颍
2. 那GC怎N硬拍茉诙阎姓业酱婊畹ο竽
程式在建立(NEW)一οr,在堆中分配H建立@ο蟮却妫V蟹峙湟指向@ο蟮囊引用.那N只要在#oB存^)中找到@引用,就可以跟到@活的ο螅ㄏ仍倌憧赡苊靼孜N要把ο螅危牛纾K不用r又⑵湓O椋危眨蹋蹋睿澹骶褪⒁梅湃V校睿酰欤煺孟喾矗业街, GC⑺一堆的K中移到另外一堆的K中,K⑺一挨一的排列起,而F一模M的=Y,只是它不是先M後出的分配.

GC的\行需要子靡程,也就是f\行GC本身就档统淌竭\行r的性能.再f了,GC如此的蹂k却,肯定也档统淌叫阅艿.F在知道了NJava程式税

想M一步t解堆和,⒖础Y》

是这样,由于Java系统很多使用了Cache,而Cache经常会超过一定大小,内存会不够,GC就开始工作,这时系统突然变慢。

还有,有的系统内存泄漏,迫使GC经常工作,直至死机。