|ECLIPSE MEMORY ANANLYSER [message #729402]
||Mon, 26 September 2011 06:24
Registered: September 2011
This is my first post in this forums, Smile
Im new to Memory Analyser.I wanted to update my knowledge regarding how to analyse heap dumps.So i wanted all your help.
I have a java application deployed on weblogic server.I dont have any Out of memory related issue.But i have leaked connection issues..So accordingly,I have made configuration of killing the inactive connection after every 4 mins
I get the below errors in weblogic.out file when an inactive session gets killed..
<Sep 26, 2011 11:17:36 AM IST> <Warning> <JDBC> <BEA-001153> <Forcibly releasing
into the connection pool "pool_1526", currently reserved by: java.lang.Exception
For heap dump analysis,i created a .bin file using jmap utility then update this .bin file on ECLIPSE MEMORY ANANLYSER tool.
The output of analyser is as follows.
Problem Suspect 1
One instance of "weblogic.jdbc.common.internal.GenericConnectionPool" loaded by "sun.misc.Launcher$AppClassLoader @ 0x866ba340″ occupies 335,917,304 (90.26%) bytes. The memory is accumulated in one instance of "java.util.LinkedList$Entry" loaded by "".
sun.misc.Launcher$AppClassLoader @ 0x866ba340
Now i want to understand,what does this mean..what is the root cause for this problem.
I would be very thankful,if any1 would help me in understanding how to analyse heap dump..
|Re: ECLIPSE MEMORY ANANLYSER [message #729413 is a reply to message #729402]
||Mon, 26 September 2011 06:53
Registered: August 2011
Leak-Suspect report shows your main accumulation point. In your case, JDBC Connection does not seem to be Released. However, your Weblogic server is forcibly reclaiming the connections, after Inactive time configured, ss you have Turned-ON the WebLogic "Connection Profiler".|
So, to further triage, you need to do the following:
1) Open "Histogram View"
Histogram View gives you number of 'Object Instances per Class", along with
its "shallow size" and "retained size". Here, Sorting by "retained size" desc
lists your "Top Objects" in memory. If Leak Suspect showed any suspect, then
those should also be listed here.
In your case, you will see the below: "weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection
2) Next is to identify the Object-Tree which is causing this Leak:
To do this, you can right-click on the class in the Histogram view and
select "List objects". In the list objects window, sort again by
"Retained size" desc, to identify 1 or more similar rows with highest
Repeat the below for top 2-3 records:
# Select a record with high Retained-Size and start opening the nodes
# This will show the object chain which is referencing this object,
as a result of which, this object is not getting garbage-collected.
Via this, you will be able to figure out, which program unit, this
connection leak is taking place.
Alternative way - Run a grep on the source-code to identify all places, where
you are getting a Connection. And ensure that this ConnectionObject is getting
released ONLY within a FINALLY Block.
Note: in your case, your weblogic configuration of "Enable Connection Profiler" is preventing your Application-server from totally going to Stand-Still, with minimal 'Force-reclaims'.
All the Best!
Powered by FUDForum
. Page generated in 0.01586 seconds