A: 

You could have a class loader leak. Read here for example.

kgiannakakis
Thanks for the link , its a great post. But i dont redeploy my application in any way.
Roman
+1  A: 

What sort of features does your application have that are out-of-the-ordinary as regards class loading? For example:

  • are you constantly loading classes from remote sources (e.g. RMI)?
  • are you using your own ClassLoader?
  • are you using the Java Proxy mechanism to create classes on the fly?
oxbow_lakes
I dont have my own classloader or constantly loading classes from remote sources , neither making use of the java proxy mechanism.But i run inside some sort of an application server that launches me and is some kind of a black box. I guess i will have to look for the problem there.Thanks !
Roman
So when you are running JConsole, you are running it against the AppServer? Not your app? There is a big difference!
oxbow_lakes
my program is inside this "server". its the same JVM. and its like 95% of the whole program.
Roman
If i am using the Java Proxy? where could be here the problem with the classloading ?
Roman
Well, if you continually call java.lang.reflect.Proxy.newProxyInstance, then each proxy may end up being an instance of a different class (i.e. a new class object may be created on-the-fly) if the list of implemented interfaces is different.
oxbow_lakes
A: 

You can use other profilers to know exactly what java objects are in memory (and verify that there is no memory leak) :

  • List TPTP (Eclipse plugin)
  • List Netbeans profiler (very good profiler)
  • List JProbe profiler (not free)
Benoit Courtine