Finding Java memory leak when not all used heap is reachable from threads

后端 未结 5 1042
醉话见心
醉话见心 2021-02-18 15:52

I am looking into a potential memory leak (or at least memory waste) in a largish Java based system. The JVM is running with a maximum heap size of 5 GB and 2-3GB heap usage is

5条回答
  •  萌比男神i
    2021-02-18 16:28

    Since the extra memory is not showing in MAT it's hard to know what to suggest. My apologies if some (or even most) of this is things you already know, I've just tried to pull together everything I could think of.

    FindBugs

    FindBugs is a static analysis tool that will scan your code looking for common anti-patterns and problems and giving you a nice report on them. It does pick up on a lot of causes of potential memory and resource leaks.

    Manual dump

    You could try using something like jmap or visualvm to take a heap dump for analysis manually and see if you get different results from letting eclipse do it:

    http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html

    http://java.dzone.com/articles/java-heap-dump-are-you-task

    Analyzer Quirks

    The memory analyzer FAQ:

    http://wiki.eclipse.org/MemoryAnalyzer/FAQ

    says:

    Symptom: When monitoring the memory usage interactively, the used heap size is much bigger than what MAT reports.

    During the index creation, the Memory Analyzer removes unreachable objects because the various garbage collector algorithms tend to leave some garbage behind (if the object is too small, moving and re-assigning addresses is to expensive). This should, however, be no more than 3 to 4 percent. If you want to know what objects are removed, enable debug output as explained here: MemoryAnalyzer/FAQ#Enable_Debug_Output

    Another reason could be that the heap dump was not written properly. Especially older VM (1.4, 1.5) can have problems if the heap dump is written via jmap.

    Enabling debug output will allow you to see what is going on there and confirm there is nothing odd in that area.

    Some of these tips may be relevant

    http://eclipsesource.com/blogs/2013/01/21/10-tips-for-using-the-eclipse-memory-analyzer/

提交回复
热议问题