[jdom-interest] JDOM output buffering question
Gamble, Wesley (WG10)
WG10 at tmw.com
Mon Jan 21 13:25:02 PST 2008
FYI, I'm on JRE 1.3.1_09.
After reviewing the verbose:gc output on my running process, I see that
tiny amounts of memory are being reclaimed multiple times/sec., but when
I complete generating my JDOM document and writing it out, I do not see
the big drop in heap size that I would expect. There must be something
I'm holding onto that I don't realize.
One question - is GC really happening once for each "[GC.." output line
in the verbose output? It looks like it's happening many times/second.
Wes
-----Original Message-----
From: Rolf Lear [mailto:jdom at tuis.net]
Sent: Monday, January 21, 2008 1:14 PM
To: Gamble, Wesley (WG10)
Cc: jdom-interest at jdom.org
Subject: Re: [jdom-interest] JDOM output buffering question
JVM's are typically reluctant to release memory back to the OS. A better
way to monitor the actual memory usage (in your case) is to turn on the
-verbose:gc commandline-option (or better, the -verbose:gc
-XX:PrintGCTimeStamps) to your Java process. This will track your memory
usage better, and tell you how much memory gets cleaned up from
no-longer-referenced Java classes (Garbage Collected).
May I suggest the following reading material:
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepap
er.pdf
Once Java requests memory from the OS, it is very unlikely to give it
back. Whether it gets used (again) or not. Tracking memory from the OS
perspective gives you no indication as to whether objects are GC's or
not.
Another Alternative is to generate a Full heap dump from your JVM (Press
Ctrl-ScrollLock in Windows, and Ctrl-\ on Unix (or kill-3 <pid>).
Rolf
Gamble, Wesley (WG10) wrote:
> I'm watching the memory for the Java process in the Windows task
> manager.
>
> -----Original Message-----
> From: Rolf Lear [mailto:jdom at tuis.net]
> Sent: Tuesday, January 15, 2008 6:41 PM
> To: Gamble, Wesley (WG10)
> Cc: jdom-interest at jdom.org
> Subject: Re: [jdom-interest] JDOM output buffering question
>
> Gamble, Wesley (WG10) wrote:
>
>> I put a finalize method on the object that holds the SAXBuilder as an
>> instance variable, and set the SAXBuilder to null, and no memory is
>> released.
>>
>> The descendant of the JDOM Document gets garbage collected, and I'm
>> assuming the SAXBuilder will get garbage collected, but my memory is
>> still way high.
>>
>> Can anyone think of any ways that resources could still be held on to
>> in this scenario. Perhaps my leak is not in JDOM.
>>
>> Thanks,
>>
>> Wes
>>
>>
>>
>
------------------------------------------------------------------------
>
>> _______________________________________________
>> To control your jdom-interest membership:
>>
>>
>
http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
> How are you measuring your memory usage?
>
> Rolf
>
>
More information about the jdom-interest
mailing list