Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.259 pregleda

Najnovija ↓

Oslobadjanje memorije u VB.net-u 01.10.2004. u 13:43 · pre 268 meseci #1
pozdrav svima

imam jedan problem oko oslobadjanja memorije koju zauzimju objekti deklrisani sa NEW:

Ovako: u treeview kontroli, kada korisnik klikne na neki node, prave se tri nova picture boxa

Code:

dim slika1 as new picturebox()
dim slika2 as new picturebox()
dim slika3 as new picturebox()


pa se onda te slike prikazuju na treeview-u

Code:

treeview1.controls.addrange(new control() {slika1,slika2,slika3})


E sada nastaje problem kada korisnik bas dosta puta klikne na razlicite node-ove pa se sve vise memorije zauzima stvaranjem ovih slicica. probao sam da ih brisem ovako:

Code:

slika1.dispose
slika2.dispose
slika3.dispose


ali onda nijedna slika nije prikazana jer je odmah izbrisana.

E pitanje glasi: postoji li nacin da se izbrise memorija svih objekata koji vise ne postoje, a pri brisanju nisu oslobodili memoriju?

HVALA>
Potpis
Hide me away from danger
Re: Oslobadjanje memorije u VB.net-u 01.10.2004. u 14:04 · pre 268 meseci #2
Možeš da eksplicitno pozoveš GC.Collect(), ali se obično preporučuje da ne radiš to, već da ostaviš GC-u da sam proceni kad treba da pokupi memoriju.
Potpis
IOCC
Re: Oslobadjanje memorije u VB.net-u 01.10.2004. u 16:22 · pre 268 meseci #3
Jarane kao sto ti je receno nemoj da se puno zezas sa oslobadjanjem memorije kod .NET-a jer je to posao GC-a.
Nego rjesenje tvoga problema je da jednom stvoris instancu a kasnije po porebi samo mijenjas sadrzaj te instance.
Jednom se meni desilo isto to kad sam radio jedan real-time sistem koji je svake sekunde provjeravao sadrzaj BD-a.
Ja sam u toj petlji koja je ustvari bila timer kreirao objekte i tako mi se aplikacija rusila.
Rjesenje je bilo da kreiram jednu instancu te onda samo mijenjam preko reference sadrzaj te instance.Dakle jedan memoriski prostor vise sadrzaja.
Potpis
eX
Re: Oslobadjanje memorije u VB.net-u 02.10.2004. u 15:23 · pre 268 meseci #4
probao sam nesto slicno, ali mi onda prikazivanje tih slicica ne ide bas po planu. Ja sam to probao tako sto sam na pocetku klase deklariso slicice, a posle umesto NEW samo im menjao polozaj, ali onda pocunju nekeako cudno da se ponasaju.

A sto je toliko strasno rucno koristiti GC?
Potpis
Hide me away from danger
Re: Oslobadjanje memorije u VB.net-u 03.10.2004. u 17:59 · pre 268 meseci #5
Vjerovatno nisi nesto dobro uradio,moralo bi ici.
Zato sto je GC predvidjen da automatski to radi i onda se nekad moze desiti da dodje do zbrke ili da se neoslobodi memorija itd...
Za dublju analizu potrazi malo na netu.
Potpis
eX
Re: Oslobadjanje memorije u VB.net-u 07.10.2004. u 13:59 · pre 268 meseci #6
*ako zelis da ti na svkom cvoru treeview kontrole ostaju slike, ond si malo nagrabusio. :)
u tom slucaju probaj da pravis manje slike - thumbinail-ove, po mogucnosti da smanjis broj boja ili tako nesto. ja sam u listview kontroli bez nekih vecih problema prikazivao i do 70-80 slicica velicine 100*70 pix u 8bit depth, ali kao ikone stavki.
picturebox kontrola pravi velike probleme sa memorijom, ukoliko je ne oslobodis. ili ako suvise uvecas sliku.

*ukoliko nema potrebe da se prikazuju slike na prethodnim cvorovima, vec samo na trenutnom onda je vec mnogo lakse
kreiraj 3 picturebox-a
e sad kad prikzujes slike u njima probaj nesto kao

Code:

picturebox1.dispose
picturebox = image.fromfile(putanja1)
treeview1.controls.add(picturebox1)

'ponovis ovo za preosala 2 pictureboxa
Potpis
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme