[ ivanradulovic @ 06.02.2007. 10:44 ] @
| Zdravo svima!
Primetio sam da nakon minimizacije JFrame-a proces drasticno smanji zauzetu memoriju. Pokusavao sam da pronadjem iz sun-ovog koda sta se desava prilikom minimizacije ali bezuspesno. JFrame je moguce minimizovati naredbom setExtendedState(int state), gledao sam i ovaj metod ali on me dovede do FramePeer interfejsa od koga ne znam kako dalje.
Poenta svega je da mi se ucinilo da je moguce na lak nacin osloboditi zauzetu memoriju ako se pronadje sta se sve desava prilikom minimizacije aplikacije, pretpostavljam da se poziva garbage collector. Poziv System.gc() metoda ne pomaze, tj. ne oslobadja se zauzeta memorija.
Svaki predlog je dobro dosao.
Hvala unapred!!! |
[ anon315 @ 06.02.2007. 11:31 ] @
Meni se cini da to nema veze sa Javom, vec se prosto prozor vise ne prikazuje, pa OS oslobodi memoriju.
[ ivanradulovic @ 06.02.2007. 13:51 ] @
Ali OS ne moze sam da oslobodi memoriju aplikacije, trebalo bi da pozove u pomoc garbage collector, a meni bas tako nesto treba u tacno odredjenim trenucima kada objekte za brisanje markiram postavljanjem na null ali se oslobadjanje memorije ne dogodi.
[ djalfirevic @ 06.02.2007. 17:14 ] @
Citat:
ivanradulovic: Ali OS ne moze sam da oslobodi memoriju aplikacije, trebalo bi da pozove u pomoc garbage collector, a meni bas tako nesto treba u tacno odredjenim trenucima kada objekte za brisanje markiram postavljanjem na null ali se oslobadjanje memorije ne dogodi.
Pa jesi li probao sa System.gc();?
[ ivanradulovic @ 06.02.2007. 17:52 ] @
Na sun-ovom forumu sam procitao da nije dobro pozivati System.gc() ali sam ipak probao, bilo je bezuspesno. Pokusao sam i da sve objekte eksplicitno postavim na null kada mi vise nisu potrebni iako izlaze iz scope-a, ali iz task manager-a stanje memorije je isto. Pretpostavio sam da sam JFrame na neki nacin poziva garbage collector kada se on minimizuje ali do tog dela ne mogu da dodjem trazeci po kodu koji je sun napisao.
Da li postoji neki drugi nacin da se u odredjenim trenucima koje ja detektujem pozove kolektor i da se oslobodi memorija?
[ bgd2500 @ 07.02.2007. 12:00 ] @
Poziv System.gc() ti ne garantuje da ce se isti odmah izvrsiti, nego onda kada virtuelna masina odluci.
A glede oslobadjanja memorije kod minimiziranja, pretpostavljam da to OS radi nezavisno od aplikacije i programskog jezika. Kad minimiziras aplikaciju on prebaci iz memorije na swap, kad maksimiziras uradi obrnuto.
Ne tvrdim da je bas tako ali mi deluje logicno da bi moglo biti.
[ aleksandarpopov @ 07.02.2007. 17:10 ] @
Code:
Primetio sam da nakon minimizacije JFrame-a proces drasticno smanji zauzetu memoriju.
I kod .NET aplikacije se isto to dešava kad minimiziraš prozor. Garant OS oslobadja memoriju.
[ anon315 @ 07.02.2007. 18:46 ] @
A ako si bas zapeo, pokusaj sa nekim profilerom..
[ ivanradulovic @ 08.02.2007. 07:43 ] @
Ok momci, odgovoricu kad budem bolje ukapirao sta se sve desava sa garbage collectorom.
[ lukeguy @ 08.02.2007. 20:11 ] @
Mislim da se to na Windowsu dešava kod svih aplikacija. Evo meni MS Access troši nekih 30 MB RAM-a, a posle minimizovanja se smanji na ~1.5 MB. Zanimljivo je da kad vratim prozor, iskorišćenost RAM-a bude oko 6 MB, daleko manje nego pre minimizovanja.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.