Garbage collection
43 отговора
1586 прегледа
Garbage collection
Az kato twurd malloc()/free() priwurzhenik i po-malko new/delete takuv - wuobshte bjah otminal temata za "garbage colletion" - po-skoro tezi dwe dumi gi wuzpriemah kato tam neshto si i ne misleh mngoo wurhu nego - wupreki che chesto si zadawah wuprosa - kvo e tva da minawash i da subirash bokluka... Taka de prochetoh edna - dve statii po wuprosa i bjah shashnat - bjah za libGC za gnu-c-to!!
Ta znachi tova chudo GC minawa prez DataSegmenta, BSS, Stacka i subira informatzia koi pointeri sa wse oshte walidni - ako ne nameri pointeri wuw tezi mesta koito obache sochat zaeta pamet - to tazi pamet se osvobozhdawa - edin wid ako wuw Data segmenta, BSS i stacka ima slednoto ostanalo
(100, 200, 400, 700) - a zaetata pamet e (100, 200, 300, 400, 500, 600, 700) - to (300, 500, 600) - se oswobozhdawat avtomatichno! - greshka njama! - napravo bjah shashnat! - az tolkova se chudih kakvo li e tuj gc.
Obache neshto tova ne mi se struva sigurno, puk i tova premahwa sutrishnata trenirowka za programista da mine prez koda si i da widi kakvi leakove e zabursal ot wchera.
Wjarno e tova si bachka za pametta - no kogato se stigne do zatwarjane na failove, ustrojstwa, wunshna pamet - tuka nema kak da pomogne GC-to.
Pri tova chovek naprimer ne mozhe da izpolzwa trikove - naprimer xor-nati pointeri - sus koito mozhe da se suzdawa optimizarn dvoino svurzan spisuk - ili wuobshte razni trickove.
Znachi li tova che ako dadenata pamet e trjabwalo da bude osvobodena no ima pointer wuw pametta deto sidi i wse oshte i sochi kum tazi pamet - to tja njama da bude osvobodena? Kakvo stava ako po sluchainost imate njakakwa promenliva kojato e sus magic-number i po sluchainost pointer sus sushtta pamet?
Wuobshte mai neshto izpuskam... ako mozhe njakoi da razjasni....
Wupreki tova GC-to osobeno za GUI, ili wuobshte za toolove kato che li ne e zle - obache za real-time prilozhenia - ili za prilozhenia deto iziskwat srochno osvobozhdawane na pametta ili nefragmentirane na tazi.
Oshte edno neshto - tova sus obzhodhdaneto na celia data-segment, BSS i stacka - ne vodi li da masovo preebavane na cache? wsushnost bi trjabwalo...
tirulirutatuutuu
Ta znachi tova chudo GC minawa prez DataSegmenta, BSS, Stacka i subira informatzia koi pointeri sa wse oshte walidni - ako ne nameri pointeri wuw tezi mesta koito obache sochat zaeta pamet - to tazi pamet se osvobozhdawa - edin wid ako wuw Data segmenta, BSS i stacka ima slednoto ostanalo
(100, 200, 400, 700) - a zaetata pamet e (100, 200, 300, 400, 500, 600, 700) - to (300, 500, 600) - se oswobozhdawat avtomatichno! - greshka njama! - napravo bjah shashnat! - az tolkova se chudih kakvo li e tuj gc.
Obache neshto tova ne mi se struva sigurno, puk i tova premahwa sutrishnata trenirowka za programista da mine prez koda si i da widi kakvi leakove e zabursal ot wchera.
Wjarno e tova si bachka za pametta - no kogato se stigne do zatwarjane na failove, ustrojstwa, wunshna pamet - tuka nema kak da pomogne GC-to.
Pri tova chovek naprimer ne mozhe da izpolzwa trikove - naprimer xor-nati pointeri - sus koito mozhe da se suzdawa optimizarn dvoino svurzan spisuk - ili wuobshte razni trickove.
Znachi li tova che ako dadenata pamet e trjabwalo da bude osvobodena no ima pointer wuw pametta deto sidi i wse oshte i sochi kum tazi pamet - to tja njama da bude osvobodena? Kakvo stava ako po sluchainost imate njakakwa promenliva kojato e sus magic-number i po sluchainost pointer sus sushtta pamet?
Wuobshte mai neshto izpuskam... ako mozhe njakoi da razjasni....
Wupreki tova GC-to osobeno za GUI, ili wuobshte za toolove kato che li ne e zle - obache za real-time prilozhenia - ili za prilozhenia deto iziskwat srochno osvobozhdawane na pametta ili nefragmentirane na tazi.
Oshte edno neshto - tova sus obzhodhdaneto na celia data-segment, BSS i stacka - ne vodi li da masovo preebavane na cache? wsushnost bi trjabwalo...
tirulirutatuutuu
Re: Garbage collection
gc-to w gcc e t.nar. gc na Bohm. to e conservativno -- niamash garancia che shte osvobodi wsichkata svobodna pamet. Kakto si se setil, ako niakoia promenliva po sluchainost ima stoinost koiato izglejda kato pointer w block, tozi block niama da byde osvoboden. syshto taka niama da mojesh da pravish xor na pointers za ikonomia na miasto :)
IMHO za c/c++ bez pomoshtta na compiler-a ne moje da se napravi neshto po-dobro. ne znam dali sled kato sa integrirali gc-to na bohm w gcc ne napravili neshto po wyprosa -- ne sym si igral s towa gc ot 3-4 godini.
IMHO za c/c++ bez pomoshtta na compiler-a ne moje da se napravi neshto po-dobro. ne znam dali sled kato sa integrirali gc-to na bohm w gcc ne napravili neshto po wyprosa -- ne sym si igral s towa gc ot 3-4 godini.
Re: Garbage collection
aha - propusnal sum za tova che e konservativno :)
kakvi drugi strategii/algoritmi ima? ili se iziskwa neshto i ot ezika (pak oprjahme do koj kakvo govori i ot koja rasa e
)?
Drugo neshto koeto zabeljazah e che si napravih malka tupa programka pod C# deto ima edin prozoretz i kato natisna buton otvarja drug - i kato zatvarjam wseki put tozi drugia i gledam wuw Task Managera - otivat si i USER/GDI Obekti - otiva si i pamet - i se chudja....
tirulirutatuutuu
kakvi drugi strategii/algoritmi ima? ili se iziskwa neshto i ot ezika (pak oprjahme do koj kakvo govori i ot koja rasa e
Drugo neshto koeto zabeljazah e che si napravih malka tupa programka pod C# deto ima edin prozoretz i kato natisna buton otvarja drug - i kato zatvarjam wseki put tozi drugia i gledam wuw Task Managera - otivat si i USER/GDI Obekti - otiva si i pamet - i se chudja....
tirulirutatuutuu
Re: Garbage collection
emi specialno za C# imashe opisanie na gc-to mu v edna statiq...
znachi povecheto moderni GC rabotqt na principa mark&sweep, t.e. pyrvo obhojdat vsichki dostypni obekti (v sluchaq na Java i C# i izobshto pod CLR - imat pylna poddryjka ot kompilatora i ot ezika - t.e. nqmash pointeri kym sredata na mem. blok, pyk ot xornati - hepten :-)
i sled kato gi obhodqt, osvobojdavat neposetenite...
Sega veche ima razlichni uslojneniq - tova, koeto si zabelqzal, che pametta samo raste, se dylji na tova, che gc-to se zadejstva samo v opredeleni sluchai. Za CLR imashe nqkvi pokoleniq - razchita se, che po-novite obekti e po-veroqtno da stanat izlishni, otkolkoto po-starite i razni takiva.. ama za podrobnosti - doc. na .njeta.
znachi povecheto moderni GC rabotqt na principa mark&sweep, t.e. pyrvo obhojdat vsichki dostypni obekti (v sluchaq na Java i C# i izobshto pod CLR - imat pylna poddryjka ot kompilatora i ot ezika - t.e. nqmash pointeri kym sredata na mem. blok, pyk ot xornati - hepten :-)
i sled kato gi obhodqt, osvobojdavat neposetenite...
Sega veche ima razlichni uslojneniq - tova, koeto si zabelqzal, che pametta samo raste, se dylji na tova, che gc-to se zadejstva samo v opredeleni sluchai. Za CLR imashe nqkvi pokoleniq - razchita se, che po-novite obekti e po-veroqtno da stanat izlishni, otkolkoto po-starite i razni takiva.. ama za podrobnosti - doc. na .njeta.
Re: Garbage collection
temata za garbage collectorite e mnogo obshirna. predi 2-3 godini se biah zainteresuval i biah otpechatal okolo 1000 stranici statii i thesis-i po wyprosa.
shte se opitam da razkaja nakratko kakwoto si spomniam -- ako niakoi nameri neshto neviarno, da me popravi.
Kakto pri programnite ezici, i pri gc algoritmite niama nai-dobyr -- wseki e dobyr za neshto.
I. reference counting
chesto se zabravia che towa syshto e gc. nedostatacite sa izvestni -- ne se spravia sys statichni strukturi. w statiite pishe che obiknoveno e po-baven ot drugite metodi. predimstvata sa che e mnogo lesen za realizacia i lesno moje da se implementira s ogranicheniata neobhodimi na real-time sistemite.
II. Kakto spomena zliq, powecheto gc algoritmi obhojdat obektite, mahaiki tezi do koito niama dostyp.
Nai-lesnia nachin e gc-to da spira osnovnata rabota na programata -- ako niama pamet, gc-to se wkliuchwa i zapochwa da obhojda obektite. tozi method weche mai ne se polzwa -- ako ne se lyja pyrvia JVM beshe s takyv gc.
Drugia varian e gc-to da raboti paralelno s izpylnenieto na programata. tozi variant ima nai-mnogo razlichni realizacii. Wsiaka ot tiah optimizira razlichen parametyr -- procent osvobodena pamet (agresivni i ne tolkowa agresivni algoritmi), kolko wreme se gubi w samia algoritym etc. tuk se poiaviavat razni read i write barieri, obektite se boiadisvat w cvetovete na dygata i t.n.
chast ot gc-to e i compactiraneto na pametta -- obektite se premestvat taka che da ima kolkoto moje po-malko i po-golemi po razmeri blokove svobodna pamet. tam syshto ima razlichni methodi, ne mi se zadylbawa w temata. w tozi sluchai syshto ima razlichni parametri za optimizacia -- nai-veche compactnost vs. wreme za postiganeto i.
veche goworihme za conservativni vs. tochni algoritmi. doskoro w JVM algoritmite syshto biaha konservatirni, mislia che neshtata se promeniha ot hotspot.
poneje sveta ne e idealen, nikoi powecheto razviti sistemi polzwat poweche ot edin variant na gc. zliq spomena za pokoleniata obekti -- okazwa se che za kratko i dylgo jiveeshtite obekti sa podhodiashti razlichni algoritmi. edin interesen variant na smesen gc algoritym ima w Limbo, kydeto kazwash dali iskash obektite ot daden klas da polzwat reference counting ili mark&sweep.
systemite za koito ima niakakvi real-time iziskvania postaviat drugi problemi -- dosta hora se mychat da napraviat dobri algoritmi za tiah.
temata e mnogo interesna, no za syjalenie iziskva mnogo wreme. ako se zainteresuvash poweche ot gc-ta, na site-a na university of texas ima dosta informacia.
shte se opitam da razkaja nakratko kakwoto si spomniam -- ako niakoi nameri neshto neviarno, da me popravi.
Kakto pri programnite ezici, i pri gc algoritmite niama nai-dobyr -- wseki e dobyr za neshto.
I. reference counting
chesto se zabravia che towa syshto e gc. nedostatacite sa izvestni -- ne se spravia sys statichni strukturi. w statiite pishe che obiknoveno e po-baven ot drugite metodi. predimstvata sa che e mnogo lesen za realizacia i lesno moje da se implementira s ogranicheniata neobhodimi na real-time sistemite.
II. Kakto spomena zliq, powecheto gc algoritmi obhojdat obektite, mahaiki tezi do koito niama dostyp.
Nai-lesnia nachin e gc-to da spira osnovnata rabota na programata -- ako niama pamet, gc-to se wkliuchwa i zapochwa da obhojda obektite. tozi method weche mai ne se polzwa -- ako ne se lyja pyrvia JVM beshe s takyv gc.
Drugia varian e gc-to da raboti paralelno s izpylnenieto na programata. tozi variant ima nai-mnogo razlichni realizacii. Wsiaka ot tiah optimizira razlichen parametyr -- procent osvobodena pamet (agresivni i ne tolkowa agresivni algoritmi), kolko wreme se gubi w samia algoritym etc. tuk se poiaviavat razni read i write barieri, obektite se boiadisvat w cvetovete na dygata i t.n.
chast ot gc-to e i compactiraneto na pametta -- obektite se premestvat taka che da ima kolkoto moje po-malko i po-golemi po razmeri blokove svobodna pamet. tam syshto ima razlichni methodi, ne mi se zadylbawa w temata. w tozi sluchai syshto ima razlichni parametri za optimizacia -- nai-veche compactnost vs. wreme za postiganeto i.
veche goworihme za conservativni vs. tochni algoritmi. doskoro w JVM algoritmite syshto biaha konservatirni, mislia che neshtata se promeniha ot hotspot.
poneje sveta ne e idealen, nikoi powecheto razviti sistemi polzwat poweche ot edin variant na gc. zliq spomena za pokoleniata obekti -- okazwa se che za kratko i dylgo jiveeshtite obekti sa podhodiashti razlichni algoritmi. edin interesen variant na smesen gc algoritym ima w Limbo, kydeto kazwash dali iskash obektite ot daden klas da polzwat reference counting ili mark&sweep.
systemite za koito ima niakakvi real-time iziskvania postaviat drugi problemi -- dosta hora se mychat da napraviat dobri algoritmi za tiah.
temata e mnogo interesna, no za syjalenie iziskva mnogo wreme. ako se zainteresuvash poweche ot gc-ta, na site-a na university of texas ima dosta informacia.
Re: Garbage collection
malkia, struva mi se che neshto hich te niama v kulturnata sfera.. taka kato gledam niama da mojesh da se podredish v redicite na budeshtite programisti...
goreshto preporuchvam "Men at work" s Charlie Sheen /eh Charlie, Charlie../ i Emilio Estevez
goreshto preporuchvam "Men at work" s Charlie Sheen /eh Charlie, Charlie../ i Emilio Estevez
Re: Garbage collection
otdelil si 15 min za da natypevash obshti prikaski koito vseki sas dostatuchno jelanie moje da prochete vav vsiaka treta kniga?
ako tova ne e durven filosof, ne znam koe e
Puk az sum goliam pisach na statii i diplomni raboti, kuklo
ako tova ne e durven filosof, ne znam koe e
Puk az sum goliam pisach na statii i diplomni raboti, kuklo
Re: Garbage collection
като пешо василев: "сега да си продължа мисълта от миналия мач" та и ти да си продължиш заяждането от миналата тема а?
техното е за неуспелите в поп-фолка
...стара китайска поговорка
техното е за неуспелите в поп-фолка
...стара китайска поговорка
Re: Garbage collection
pleshtite mi sa tvurde krehki za da nosia prinosi
ostaviam tazi vajna otgovornost na teb...
ostaviam tazi vajna otgovornost na teb...
Re: Garbage collection
za teb (devojkata) vidaqhme, che za po-byrzo napravo pastevash ot dokumentaciqta...
Re: Garbage collection
Blagodarja,
mezhdu-drugoto majka ti kato malka da te e udrjala s lopata po putkata?
tirulirutatuutuu
mezhdu-drugoto majka ti kato malka da te e udrjala s lopata po putkata?
tirulirutatuutuu
Re: Garbage collection
Izwinjawaj - njamam dva ezika kato tebe che da go pravja.
tirulirutatuutuu
tirulirutatuutuu
Re: Garbage collection
Imam si kompleksi za izbivane - shte si gi izbivam tuka,
Nikoj ne mozhe da mi kazhe kude moga i kude ne moga da si izbiwam kompleksite.
It's a free country, sistah!
btw - kusno li e pri tebe?
tirulirutatuutuu
Nikoj ne mozhe da mi kazhe kude moga i kude ne moga da si izbiwam kompleksite.
It's a free country, sistah!
btw - kusno li e pri tebe?
tirulirutatuutuu
Re: Garbage collection
dim ne beshe prav za teb
ne viarvam da si se naporkal oshte v ranen sledobiad
ti prosto si guz
Um caruva, Um robuva, Um belia delfin
ne viarvam da si se naporkal oshte v ranen sledobiad
ti prosto si guz
Um caruva, Um robuva, Um belia delfin
Re: Garbage collection
absoluten guz sum - toj dimd00d me znae,
pulen sum s kompleksi, koito obicham da izbivam.
kakvo drugo te interesuwa?
i ne porkam ot dosta wreme.
Mislja che temata beshe za Garbage Collection-a - a ti oburna wsichkoto na tova - che wide li se ako ne znam shto e tuj GC - i nema rabota za mene...
Drago momiche - lichi si che znaesh materiala, chetesh dosta knigi, koeto e mnogo dobre - no kogato se raboti w ekip - dori i da si naj-dobria ako njamash razbirane za kolegite ti koito sa s po-malko mozuk ot tebe - togava ti si wun ot ekipa - ne kolegite ti. Imash, ili pravish se che imash despotska natura, totalitariskta - wupreki che na zhivo ako se sreshtnem sigurno shte si tiha i mila kato bozha kravichka (pu moe se burkam de).
Nachina da pokazhesh inteligentnostta si kum moja tup wupros e wuobshte da ne otgovarjash... no ti beshe purwa...
btw - ne mi otgovori - pri tebe tumno li e sega?
tirulirutatuutuu
pulen sum s kompleksi, koito obicham da izbivam.
kakvo drugo te interesuwa?
i ne porkam ot dosta wreme.
Mislja che temata beshe za Garbage Collection-a - a ti oburna wsichkoto na tova - che wide li se ako ne znam shto e tuj GC - i nema rabota za mene...
Drago momiche - lichi si che znaesh materiala, chetesh dosta knigi, koeto e mnogo dobre - no kogato se raboti w ekip - dori i da si naj-dobria ako njamash razbirane za kolegite ti koito sa s po-malko mozuk ot tebe - togava ti si wun ot ekipa - ne kolegite ti. Imash, ili pravish se che imash despotska natura, totalitariskta - wupreki che na zhivo ako se sreshtnem sigurno shte si tiha i mila kato bozha kravichka (pu moe se burkam de).
Nachina da pokazhesh inteligentnostta si kum moja tup wupros e wuobshte da ne otgovarjash... no ti beshe purwa...
btw - ne mi otgovori - pri tebe tumno li e sega?
tirulirutatuutuu
Re: Garbage collection
ti si absoluten kompleksar - ne za drugo a zashtoto samo takav moje da oburne ochevadna shega v personalna napadka. ne znam kak se raboti v ekip s teb - sigurno shte da e mnogo trudno da kontaktuvash vseki den s niakoi koito e operiran ot chuvstvo za humor v krehka detska vuzrast.
vurvi rentni filma ot blockbusters i go gledai.
vurvi rentni filma ot blockbusters i go gledai.