Garbage collection

43 отговора 1586 прегледа
#1

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
Отговор
в отговор на malkia #2

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.

Отговор
в отговор на l #3

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
Отговор
в отговор на malkia #4

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.

Отговор
в отговор на malkia #5

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.

Отговор
в отговор на malkia #6

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

Отговор
в отговор на l #7

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

Отговор
в отговор на edno momiche #8

Re: Garbage collection

като пешо василев: "сега да си продължа мисълта от миналия мач" та и ти да си продължиш заяждането от миналата тема а?

техното е за неуспелите в поп-фолка
...стара китайска поговорка
Отговор
в отговор на grouchy #9

Re: Garbage collection

ne zapochnah az.

Отговор
в отговор на l #11

Re: Garbage collection

pleshtite mi sa tvurde krehki za da nosia prinosi
ostaviam tazi vajna otgovornost na teb...

Отговор
в отговор на edno momiche #12

Re: Garbage collection

za teb (devojkata) vidaqhme, che za po-byrzo napravo pastevash ot dokumentaciqta...

Отговор
в отговор на edno momiche #13

Re: Garbage collection

Blagodarja,

mezhdu-drugoto majka ti kato malka da te e udrjala s lopata po putkata?

tirulirutatuutuu
Отговор
в отговор на malkia #14

Re: Garbage collection

mejdiu drugoto, s toia ezik i na maika si li govorish?

Отговор
в отговор на edno momiche #15

Re: Garbage collection

Izwinjawaj - njamam dva ezika kato tebe che da go pravja.

tirulirutatuutuu
Отговор
в отговор на malkia #16

Re: Garbage collection

a moje li da si izbivash kompleksite niakude drugade?

Отговор
в отговор на edno momiche #17

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
Отговор
в отговор на malkia #18

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

Отговор
в отговор на edno momiche #19

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
Отговор
в отговор на malkia #20

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.

Отговор