| 
| Uses of the Memory Analyzer for Eclipse Development [message #1928] | Mon, 04 February 2008 12:14 |  | 
| Eclipse User  |  |  |  |  | Hi There, 
 we proposed to contribute the Memory Analyzer a couple of weeks ago. Let
 me give you a better picture of what it is and how it could be of use to
 Eclipse.
 
 The Memory Analyzer works with HPROF heap dumps. A heap dump is a complete
 picture of all objects held in memory at a given point of time. One can
 browse the objects, see why they are not garbage collected (path to GC
 roots), what memory they keep alive (retained set) and how big that chunk
 is (retained size).
 
 Okay, that's business as usual, you say. Well, the Memory Analyzer allows
 you to extend it by something called queries. This is what you can do:
 
 * Group objects by class loader: Any up-to-date architecture loads
 components with separate class loaders, be it osgi or JEE application
 servers. The Memory Analyzer allows you to extract meaningful names for
 different types of class loaders. Thereby one directly sees the object X
 was loaded by plug-in Y.
 
 * Identify leaking class loaders: Ever seen memory consumption go up after
 each deploy-undeploy-deploy cycle? This can happen if the component does
 not de-register itself properly. But how do you find out? Using the Memory
 Analyzer, one could easily build a query that displays the classes (or
 class loaders) which should not be there anymore. Of course, to do this,
 you need the implementation know-how which of the class loaders are valid
 applications.  For example, we know our application server keeps a
 reference to valid class loaders in some registry. So all class loaders
 not contained therein are suspicious. We extract those suspects for
 further analysis. This type of query is also applicable to Eclipse
 Plug-ins and/or other open source servers.
 
 Other highlights that come to my mind: The Memory Analyzer works on
 multi-GB production heap dumps. Actually, that is the reason why we
 started developing the tool in the first place. We couldn't find other
 tools that enabled us to look into a 50 million object heap dump.
 
 And one more thing: the retained size of any object is directly available.
 And the retained sizes of arbitrary object sets can be approximated very
 quickly. This is important as the retained size is the most important
 indicator when looking for memory leaks.
 
 
 More Details:
 http://www.eclipse.org/proposals/memory-analyzer/
 https://www.sdn.sap.com/irj/sdn/wiki?path=/display/Java/Java +Memory+Analysis
 
 
 Kind regards,
 
 - Andreas.
 |  |  |  | 
Powered by 
FUDForum. Page generated in 0.03294 seconds