Article View: be.comp.programming
Article #14641Re: Memory leak in Java ?
From: Bruno De Wolf
Date: Fri, 19 Jan 2001 14:47
Date: Fri, 19 Jan 2001 14:47
47 lines
2443 bytes
2443 bytes
Bart Dammans wrote:
> [ Knip memory-probleem ]
>
> Ik heb een aantal individuele classes die de een na de ander opgeroepen
> worden :
>
> Object o = new Object();
> 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();
>
> if( !ok ) apps.deleteElementAt( i )
> }
>
> In deze loop verwijst het object o dus steeds weer naar een nieuw object,
> dus het oude zou toch moeten verwijderd worden ?
Stel: je hebt in je lijst 5 objecten (a,b,c,d,e) en i=2
Je voert dan b.runApp uit en apps.deleteElement(2)
Je lijst is nu dacht ik: (a,c,d,e)
Vervolgens i=3 (i=i+1) (je voelt hem al komen):
d.runApp
c.runApp wordt nooit uitgevoerd en blijft in je lijst staan!!
>
> Wat gebeurt er trouwens als een niet meer gebruikt object zelf nog naar
> objecten in
> het geheugen verwijst?
Mag normaal geen probleem zijn. Ieder object heeft een ref-count (=aantal
objecten dat naar het object refereer). Het geheugen mag vrijgegeven worden als
ref-count = 0. Stel dat a verwijst naar b en je vernietigd b: op dat moment weet
JVM dat ref-count(b) met 1 mag verminderd worden.
Bruno
Technical Details
Message-ID:
<3A68536A.C1BE2D4@bpt-c.com>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!nntp-relay.ihug.net!ihug.co.nz!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!skynet.be!poster!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-19 06:47:28 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!nntp-relay.ihug.net!ihug.co.nz!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!skynet.be!poster!not-for-mail From: Bruno De Wolf <bruno.de.wolf@bpt-c.com> Newsgroups: be.comp.programming Subject: Re: Memory leak in Java ? Date: Fri, 19 Jan 2001 15:47:07 +0100 Organization: Belgacom Skynet SA/NV Lines: 49 Message-ID: <3A68536A.C1BE2D4@bpt-c.com> 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: viap097.atea.be Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: news1.skynet.be 979915647 25779 194.78.143.97 (19 Jan 2001 14:47:27 GMT) X-Complaints-To: abuse@skynet.be NNTP-Posting-Date: 19 Jan 2001 14:47:27 GMT X-Mailer: Mozilla 4.73 [en] (WinNT; U) X-Accept-Language: en