Article View: be.comp.programming
Article #14632Re: Memory leak in Java ?
From: Armin Gerritsen
Date: Thu, 18 Jan 2001 16:09
Date: Thu, 18 Jan 2001 16:09
69 lines
3179 bytes
3179 bytes
>Ik heb een aantal individuele classes die de een na de ander opgeroepen
>worden :
>
> Object o = new Object();
Waarom doe je dit?
> Vector apps; // bevat lijst met de uit te voeren classes
> boolean ok = true;
>
> while( apps.size() > 0 )
> {
> i++;
> if( i == apps.size() ) i = 0;
>
> o = Class.forName( (String)apps.getElementAt(i) )
> ok = o.runApp();
o = null ;
System.gc() ;
Misschien dat dat helpt als die 'o' groot is.
> if( !ok ) apps.deleteElementAt( i )
Mmm, wat deed deleteElementAt(i) ook al weer precies - beetje te lang
geleden.
Kun je die reference naar dat element misschien ooke xpliciet op null zetten
en daarna de gc() expliciet aanroepen?
Zo ja, zou ik dat proberen.
Ik heb hetzelfde gehad met arrays van byte-data. Enkel het expliciet op null
zetten en daarna gc() aanroepen zorgde voor de de-allocatie. Mogelijk omdat
de JVM welliswaar vrijgeeft waarnaar niet naar gerefereerd wordt, maar dat
de call gc() zelf niet het zoeken naar zulke referentieloze blokken
intitieerd. In dat geval zou de JVM mogelijk enkel op 'rustige tijden' gaan
zoeken naar dit soort geheugenblokken en die rustige tijden komen misschien
niet in jouw applicatie.
Pure speculatie van mijn kant, dus misschien dat het heel anders is in
werkelijkheid, maar dat hielp in ieder geval bij mij.
> Wat gebeurt er trouwens als een niet meer gebruikt object zelf nog naar
>objecten in
> het geheugen verwijst? Misschien moet ik het probleem in die richting
gaan
>zoeken.
Interessant. Staat vast wel in de JVM specificatie.
Beetje het linked list idee waarvan je de root delete. Volgens mij wordt dan
toch de hele zaak vrijgegeven.
> In de task manager van Win NT is trouwens goed te merken dat het systeem
>telkens een deel
> geheugen reserveert, maar slechts gedeeltelijk weer vrijgeeft.
Leve Java. ;-(
Armin
--
Philips Semiconductors B.V.
Systems Laboratory Eindhoven (PS-SLE)
Tools:
http://www.phys.uu.nl/~gerritsn/download.html
--
(To reply remove DELETE from adres.)
Technical Details
Message-ID:
<9474h3$sui$2@porthos.nl.uu.net>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!newsfeed.esat.net!newsfeed2.news.nl.uu.net!newsfeed1.news.nl.uu.net!sun4nl!not-for-mailReferences:
<7q296.192451$MA1.6350755@afrodite.telenet-ops.be> <3A6565EF.E4F262F@rug.ac.be> <xHn96.198967$MA1.6599539@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,901bafc4913d27fe X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-01-18 08:12:04 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!newsfeed.esat.net!newsfeed2.news.nl.uu.net!newsfeed1.news.nl.uu.net!sun4nl!not-for-mail From: "Armin Gerritsen" <armin.gerritsen@philips.DELETE.com> Newsgroups: be.comp.programming Subject: Re: Memory leak in Java ? Date: Thu, 18 Jan 2001 17:09:39 +0100 Organization: UUNET-NL (http://www.nl.uu.net) Lines: 72 Message-ID: <9474h3$sui$2@porthos.nl.uu.net> References: <7q296.192451$MA1.6350755@afrodite.telenet-ops.be> <3A6565EF.E4F262F@rug.ac.be> <xHn96.198967$MA1.6599539@afrodite.telenet-ops.be> NNTP-Posting-Host: gw-ehv03.pnl.philips.com X-Trace: porthos.nl.uu.net 979834211 29650 212.153.190.3 (18 Jan 2001 16:10:11 GMT) X-Complaints-To: abuse@nl.uu.net NNTP-Posting-Date: 18 Jan 2001 16:10:11 GMT X-Newsreader: Microsoft Outlook Express 4.72.3612.1700 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3612.1700