I have got a large (5GB) hprof dump, created by application when OutOfMemoryError
occurred. (Using XX: HeapDumpOnOutOfMemoryError ).
Unfortunately there are no logs collected when this error happened. Re-creating this will take couple of hours. I was hoping if some tools could show the exception stack trace or all threads stacks etc from hprof.
I am currently using MAT, could not see a way to get thread information. Which tool I could use?
(I am not sure if hprof file has information about thread/location of call when OOM occurred).
( I do know to how to take thread dump in normal cases. The trouble here is the event already happened, all I have is the hprof dump. )
MAT can show the threads directly now (perhaps this was added since the question was asked).
Use visualvm.
try to analyse the graph when perm heap space exceeds... u should also check the memory samples & save its snapshot..
Analysis the thread stack... will help you narrow down to the problem.
Answering own question. Credit goes to @ RC
Eclipse MAT allows you to see the suspect threads in the Leak suspects report. Look for the classes in your application namespace with their line numbers to find how much memory they occupy in heap. This will give you a hint of leaky classes.
You can kill -3 the process id to get a thread dump to standard out. This will not kill the java process so you can do it as many times as you want.
as RC stated visualVM is a good tool which will give you Object counts by class type and all kinds of graphs and profiling tools.
I don't think heap dump contains thread information except GC root. If you need thread related information, you need to take thread dump also.