views:

39

answers:

1

I seem to have a huge memory leak in a large Java application. But the leak does not seem to be within the JVM memory itself (ie: heap, eden, survivor, code, perm_gen, etc.) since I don't run out of this type of memory (ie: it goes up during use, but it goes back down eventually when the GC runs).

My problem is that I run out of system RAM! So I'm tracing the '/proc/smap' and using the 'pmap' tools to see what is going on. For example, the 'so', 'tmp' and 'jar' entries stay relatively stable and don't increase all that much in mapped items nor do their mapped size increase unexpectedly either (as expected).

But what does grow over time significantly is the number of mapped entries that are NOT assigned to a particular pathname. Over time, there are more and more of these and they don't seem to go away.

I can understand what's going on for example when the JVM maps a JAR file, but what exactly are these pathless mappings? Anyone have an explanation/example?

Also, can anyone confirm that the '[heap]' entry is the actual 'JVM' code heap and has nothing to do with the XMM ans XMS heap space.

I'm using Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03) on a 2.6.16 Linux distro.

A: 

Which application server do you use?

It might be c heap memory leak, so can you upgrade your jdk and have a try?

Kevin Yang