Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Garbage collector

[es] :: .NET :: C# Garbage collector

[ Pregleda: 2473 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.broadband.blic.net.

Sajt: www.knjigaimena.com


+5 Profil

icon C# Garbage collector13.10.2008. u 19:34 - pre 188 meseci
Pozz svima.

Nije mi baš jasno da li će garbage collector da pokupi smeće iza mene u sledećoj situaciji pa molim nekoga ko zna da objasni (meni i svima koji ne znaju).
Najjednostavniji primer je lista npr ako više ne želim da je koristim, da li je dovoljno referencu na glavu liste stavim na null, tj da nemam više referencu na nju, da li će se GC postarati oko cele liste?
Šta ako je lista bila cirkularna? Da li će i tada da obriše jer zadnji ima referencu na prvi?

Još bolji primjer je stablo podataka. Pa npr ako treba da "potkrešem" to stablo tj odbacim neke grane, da li je dovoljno da zaboravim na root reference te grane i da se GC pobrine za njih (sve grene i grančice tog podstabla)?

Hvala
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.178.*



+987 Profil

icon Re: C# Garbage collector13.10.2008. u 21:51 - pre 188 meseci
GC radi tako sto prvo oznaci da je sve ne-referencirano("mrtvo") i onda prolazi kroz sve objekte u steku, tj. objekte kojima se moze pristupiti iz programa, ukoliko im se moze pristupiti on ih obelezi kao "zive", tj. upotrebljive. S obzirom da na pomenute strukture podataka vise ne postoji referenca iz programa oni ce i dalje biti oznaceni "za brisanje" iako referenciraju jedni na druge. Mislim da je suvise trivijalan problem da bi ovi M$-a to prevideli.

Tako da je odgovor da, samo trebas da postavis referencu na null i GC objekat vidi kao "collectable", tj. moze da se brise.
 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.broadband.blic.net.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: C# Garbage collector14.10.2008. u 22:19 - pre 188 meseci
OK tako sam i mislio
No hajde sada malo da usložnimo stvari
šta ako je u pitanju stablo ali koje može imati i cirkularne reference, da više grana pokazuje na isti čvor tj da ne bude klasično stablo.
Ukoliko tada zaboravim na root moguće je da će neka grana pokazivati na njega. I u ovom slučaju nema pristup iz programa oni su u memoriji ali su uvezani u "to čudno" stablo (kako ga ja od milja zovem žbun )

Da li će i tada on znati da razreši problem?
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.178.*



+987 Profil

icon Re: C# Garbage collector14.10.2008. u 23:04 - pre 188 meseci
Pa po tvom opisu, opet ce nega grana u tom zbunu imati pokazivac na "obrisani" cvor, tj nisi ga obrisao u potpunosti, i opet imas neku referencu na njega iz programa.

E sad, SAVRSEN automatizovan garbage collector ne postoji niti ce postojati, uvek moze da se nadje situacija u kojoj GC nece raditi korektno.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# Garbage collector15.10.2008. u 09:34 - pre 188 meseci
Eh, ne mozes zeznuti GC na te jeftine fore

Pogledaj sledece blogove za vise objasnjenja (posto GC nije standardizovan, svaki release ima svoj GC)

I Am a Happy Janitor – Part 1: Finding garbage

How does the GC work and what are the sizes of the different generations?
Na kraju ovog bloga imas jos linkova ka detaljima, u principu tessin blog je odlican za sve koji hoce ozbiljnije da se bave debugom .NETa.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.broadband.blic.net.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: C# Garbage collector17.10.2008. u 16:11 - pre 188 meseci
Citat:
Igor Gajic: Pa po tvom opisu, opet ce nega grana u tom zbunu imati pokazivac na "obrisani" cvor, tj nisi ga obrisao u potpunosti ...


Da imaće pokazivač na obrisani čvor, ali ako sam ja "žbunu" imao pristup samo preko jedne tačke, tj tog root elementa kada njega obrišem više neću imati pristup nijednom elementu tako da bio on (root, ali i celi žbun) teoriski trebao biti za brisanje.

Citat:
mmix: Eh, ne mozes zeznuti GC na te jeftine fore ;)
...


Hehe pa nije mi ga cilj zeznuti :) baš nasuprot cilj bi mi bio da se on pobrine na smeće koje ostane iza mene pa me zato zanima da li će se on snaći, jer ako neće onda ja moram razbijati glavu da to razrešim tj, da odpetljam "žbun" i poskidam sve reference tako da onda on zna da se oslobodi :)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# Garbage collector19.10.2008. u 14:43 - pre 188 meseci
I bice obrisan jer vise nije dostupan (vidi onaj blog I'm a happy janitor)

Ne moras uopste da se maltretiras oko tih stari jer ce GC savrseno dobro obaviti svoj posao. Jedino sto ti treba da osiguras je da ako objekat implementira Disposable patter, da pozoves Dispose pre nego referenca "nestane" jer nikad ne mozes da znas u kojoj generaciji ti se nalazi objekat i da li ce mozda biti pociscen tek na kraju izvrsavanja programa.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: C# Garbage collector

[ Pregleda: 2473 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.