Megválaszolatlan hozzászólások | Aktív témák Pontos idő: szomb. ápr. 27, 2024 7:55



Hozzászólás a témához  [ 7 hozzászólás ] 
Java + szemétgyűjtés 
Szerző Üzenet
gyémánt tag
Avatar

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 4777
Tartózkodási hely: Siófok
Hozzászólás JTree használata
Egy kicsit meggyűlt a bajom a JTree komponenssel. Hogyan kell ezt használni? Nekem nem engedelmeskedik.

Egyelőre nem túl bonyolult a dolog: van egy JTree komponens (rátéve egy görgető panelre), meg két nyomógomb. Egyikkel új elemet lehet hozzáadni (pillanatnyilag csak a gyökérhez), a másik meg törli az összeset a gyökérből. Csakhogy... Ahányszor megnyomom a hozzáadás gombot, annyi "gyerek" meg is jelenik amikor a csomópontot kinyitom, de ezek után hiába próbálok újabbakat hozzáadni, azt már nem csinálja meg, és a hierarchiát jelző vonalak is hiányoznak. Ha a másik gombbal törlöm az összes gyereket (a gyökér marad), azt megcsinálja. Ha ezután újabb gyerekeket adok hozzá, akkor annyi gyerek jelenik meg, amennyit az első kinyitás előtt csináltam (és törölve lettek!), de csak az újonnan hozzáadott gyerekeknél jók a vonalak...

A komponens sima JTree, a gyökér meg a többi DefaultMutableTreeNode-ok, az adatmodellje DefaultTreeModel. Mi nem stimmel?

Kép


szer. ápr. 16, 2008 13:43
Profil Privát üzenet küldése
ezüst tag

Csatlakozott: csüt. jan. 20, 2005 20:14
Hozzászólások: 62
Hozzászólás 
Köszönöm a tanácsokat, amint lesz időm, ki fogom próbálni őket. Remélem, használnak majd.


szer. aug. 08, 2007 9:18
Profil Privát üzenet küldése
arany tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 146
Hozzászólás 
A System.gc() az nem kényszerít, csak ajánl. Azaz nem garantált hogy a garbage collector le is fut, ezzel csak közlöd vele, hogy az adott időpillanat alkalmas a futásra. Ugyan ez a helyzet a runFinalize() metódussal is.

Vackornak teljesen igaza van: memory leak-et beragadt referencia okozhat. Két dolgot tehetsz: kézzel végigbogarászod a kódodat, hogy hol maradt ilyened, vagy letöltesz egy trial JProfiler-t és megkeresteted vele. Érdemes körülnézni a szálkezelésnél (ha több szálat használsz), ott hajlamos az ember "bennfelejteni" ojjektum-hivatkozásokat.

Esetleg még variálhatsz a GC paraméterezésével ( http://java.sun.com/javase/technologies ... ptions.jsp ), de ehhez alaposan ismerni kell a GC algoritmusokat.


kedd aug. 07, 2007 13:20
Profil Privát üzenet küldése
gyémánt tag
Avatar

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 4777
Tartózkodási hely: Siófok
Hozzászólás 
Jó a kérdés! :-)
Ugyanazt a JRE verziót használod mindkét esetben? Esetleg másik gépen is így viselkedik?


hétf. aug. 06, 2007 11:59
Profil Privát üzenet küldése
ezüst tag

Csatlakozott: csüt. jan. 20, 2005 20:14
Hozzászólások: 62
Hozzászólás 
Bármi elképzelhető, de akkor a fejlesztőkörnyezetből tesztelve (indítva) miért csökken a felhasznált memória, amikor kell?


hétf. aug. 06, 2007 11:10
Profil Privát üzenet küldése
gyémánt tag
Avatar

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 4777
Tartózkodási hely: Siófok
Hozzászólás 
Csak egy ötlet: nem lehet hogy valamelyik komponens még tárol egy hivatkozást, ezért nem nullázódik számláló?


hétf. aug. 06, 2007 9:43
Profil Privát üzenet küldése
ezüst tag

Csatlakozott: csüt. jan. 20, 2005 20:14
Hozzászólások: 62
Hozzászólás Java + szemétgyűjtés
Sziasztok!

Van egy Java alkalmazásom, ami szép nagy képeket jelenít meg. Egy idő után betelíti a memóriát. Minden objektumot, ami ezt végzi, mindig lenullozok, aztán meghívom a System.gc()-t és a System.Runfinalize()-t is. Oracle JDeveloper-t használok. Az az érdekes, hogy amikor belőle indítom el az alkalmazást, akkor úgy tűnik, végez valamiféle takarítást, amikor java.exe -jar alkalmazas.jar módon indítom, vagy simán az alkalmazas.jar-ral, akkor még véletlenül sem takarít, csak a memóriát pusztítja.
Tud valaki valami okosat mondani erről?


hétf. aug. 06, 2007 8:04
Profil Privát üzenet küldése
Hozzászólások megjelenítése:  Rendezés  
Hozzászólás a témához   [ 7 hozzászólás ] 

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 31 vendég


Nem nyithatsz témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Magyar fordítás © Magyar phpBB Közösség