M
Mikhail T.
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
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