Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2007

Tip: Looking for answers? Try searching our database.

Obtaining a memory dump...

Thread view: 
Mikhail T. - 11 May 2007 18:59 GMT
Hello!

We know, that sending a Java process signal 3 will cause it to dump the
list of threads to the stderr.

What we would like, however, is the (huge) list of objects.

A vendor's program (we don't have sources) runs for a while here
consuming "modest" 80Mb of memory.

Then -- SOMETHING -- happens, and the process' memory consumption starts
 to grow rapidly, until it reaches the maximum heap size (currently set
to 3.2Gb) and reports "OutOfMemoryException". The process does not die,
as the exception is caught (and the memory use returns to normal), but
random things begin to fail and it needs to be restarted...

We can not reproduce the problem reliably, so the vendor can't help us
solve it much.

What we'd like is to obtain the dump of all objects to get a hint on
what is causing the out-of-control memory consumption.

I'm aware of multiple different memory profilers, but they all seem to
get the snapshots *upon request*. We can't sit here requesting snapshots
periodically, and doing so will impose unwelcome extra load on the process.

Is there some way, we can obtain a dump, when the exception is thrown?

Alternatively, can we obtain the heap-dump the same way we can obtain
the thread-dump?

Thanks!

    -mi
Lew - 12 May 2007 00:23 GMT
> Hello!
>
[quoted text clipped - 9 lines]
> to grow rapidly, until it reaches the maximum heap size (currently set
> to 3.2Gb) and reports "OutOfMemoryException".

Are you quite certain?  I strongly suspect, but have to ask, isn't it actually
an OutOfMemoryError?

The thing is, with an Error you aren't supposed to let the process live:
> An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
(<http://java.sun.com/javase/6/docs/api/java/lang/Error.html>)

and yet,
> The process does not die, as the exception is caught (and the memory use returns to normal), but
> random things begin to fail and it needs to be restarted...

Explaining, perhaps, why the language Designers told the us not to catch that
Error.  Tsk, tsk.

Which would still leave you with the difficulty of diagnosing the problem.

Aside from getting a complete JVM dump, is there anything spitting out in the
error messages that gives any clue?

Signature

Lew



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.