Our application is running on multiple servers based on load balancing .
The application is deployed in all of them.
There has been an Out of memory issue and we identified 2 possible reasons for memory leak.
1 is oracle connections where not closed .
the other one is connection object for mainframe was not released.
These were identified based on heap dump analysis and the fix was put in only 2servers to find the behaviour.
Now I have connected jconsole to all the servers for monitoring
1 server where there is no fix and
another server where there is a fix.
Now question is how to read the memory graph and validate the fix?
one good thing is in one server where we have the fix memory graph is almost flat.
and another server where the fix is not available the memory graph is slanting .
but the load in both of them are not exactly equal .
Is there a standard way or intelligent way to analyze and read jconsole graph?
is there any template ?
1. Where did you see Out of Memory Exception - was it in your application/server log file? Does that give you a hint as to what was going on when you got that exception.
2. Have you tried Visual VM (<JDK_HOME>\bin\jvisualvm.exe) - this is better than JConsole. Its there in JDK 1.6 (maybe in 1.5 too, not sure)
3. Can you examine the Heap Dump - to see if there are a huge number of objects of a particular class - that are not expected?
The out of memory we got thru heap dump file
It is analyzed with heap analyzer tools like netbeans and no tools gave exact result.
but based on top 20 memory consumers we
identified 2 problems in application and had put fix.
closing oracle and mainframe connections.
It is not a direct java appl.tibco java combined application
Now qstn is how to compare the memory graph and not on heap error.