{"id":496,"date":"2011-08-28T11:20:00","date_gmt":"2011-08-28T11:20:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/eclipse-memory-analyzer-mat.html"},"modified":"2012-10-21T20:04:36","modified_gmt":"2012-10-21T20:04:36","slug":"eclipse-memory-analyzer-mat","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html","title":{"rendered":"Eclipse Memory Analyzer (MAT)"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">In times past, when it came to tracking down sporadic memory problems  in a complex Java application, it required using a commercial product  such as JProbe or a lot of painful and inefficient attempts to recreate  the issue.  Even if the problem were easy to recreate, unless the  problem was blatantly obvious, your application might need to be  enhanced in an iterative fashion to collect sufficient information to  begin to diagnose the problem.  And don\u2019t make the rookie mistake of  assuming the class\/method\/line that threw the OOM is your problem area.   That just happens to be the code that couldn\u2019t obtain the necessary  memory.<\/p>\n<p>Fortunately, now we have a decent free tool that integrates with the  Eclipse known as Memory Analyzer, or MAT.  Installation can be done via  the standard update sites, just type memory analyzer and follow the  installation instructions.  Charts feature isn\u2019t required if all you  want to do is track down your problem areas.  And I\u2019ll assume you either  have a heap dump generated on an OutOfMemory or have connected to a  live vm to extract one.  If you don\u2019t have one and the vm is running,  you can use MAT to extract one.  Just look in File menu, Acquire Heap  Dump option.<\/p>\n<p>When you first open your heap dump, MAT will ask if you\u2019d like to run one of their canned reports.<\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/2.bp.blogspot.com\/-mzoNzLBgH-Q\/Tln3YtMz-PI\/AAAAAAAAAF8\/YC3St37fzq0\/s1600\/MAT_Getting_Started.png\"><img decoding=\"async\" border=\"0\" height=\"274\" src=\"http:\/\/2.bp.blogspot.com\/-mzoNzLBgH-Q\/Tln3YtMz-PI\/AAAAAAAAAF8\/YC3St37fzq0\/s320\/MAT_Getting_Started.png\" width=\"320\" \/><\/a><\/div>\n<p>This likely isn\u2019t worth your while.  I haven\u2019t found them to provide any  meaningful insight.  Perhaps if your application is very simple, the  problem is obvious or in the case of tuning, the Component Report, these  reports might be worth a shot.  But likely your best starting point is  to take a look at the dominator tree.<\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/4.bp.blogspot.com\/-zoPtbovjzg4\/Tln3h8kvDLI\/AAAAAAAAAGA\/1DqmTdvzGuw\/s1600\/MAT_Dominator_Tree.png\"><img decoding=\"async\" border=\"0\" height=\"224\" src=\"http:\/\/4.bp.blogspot.com\/-zoPtbovjzg4\/Tln3h8kvDLI\/AAAAAAAAAGA\/1DqmTdvzGuw\/s320\/MAT_Dominator_Tree.png\" width=\"320\" \/><\/a><\/div>\n<p>Either use the icon, the Dominator Tree link under the Biggest Objects by Retained Size section, or select it as an Action.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>First of all, the default Dominator Tree view shows single objects.   If nothing jumps out at you immediately, you can take one or both of the  following actions.<\/p>\n<ul>\n<li>Select the Group Result By\u2026 icon and group by class<\/li>\n<li>Right click the header row and select Columns -&gt; Edit Filter -&gt; Class Name or start typing in the Regex row if available<\/li>\n<\/ul>\n<p>This allows you to see # of Objects of each type and also filter them  by your code, or perhaps other package name patterns that you suspect  may be causing problems.  Once you\u2019ve found an entry that you\u2019d like to  dive into, you have several ways of getting additional information.  If  you expand the class selection, you\u2019ll be able to see what references  the objects are holding and their sizes \u2013 the retained objects.  And MAT  is smart enough that the filters you may have applied do not extend to  these retained objects.<\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/3.bp.blogspot.com\/-SB_3UUGfgH8\/Tln3vmwbPaI\/AAAAAAAAAGE\/74BaiX67too\/s1600\/MAT_Class_Contains.png\"><img decoding=\"async\" border=\"0\" height=\"56\" src=\"http:\/\/3.bp.blogspot.com\/-SB_3UUGfgH8\/Tln3vmwbPaI\/AAAAAAAAAGE\/74BaiX67too\/s320\/MAT_Class_Contains.png\" width=\"320\" \/><\/a><\/div>\n<p>If you right click the class entry and select \u201cShow Retained Set\u201d, you  will see all the retained objects of everything ultimately contained by  that object, a very convenient view that can help you quickly pinpoint a  problem class.<\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/3.bp.blogspot.com\/-A7FW2sUDHvc\/Tln35FChlNI\/AAAAAAAAAGI\/KYZLHb3LEFA\/s1600\/MAT_Retained_Set.png\"><img decoding=\"async\" border=\"0\" height=\"320\" src=\"http:\/\/3.bp.blogspot.com\/-A7FW2sUDHvc\/Tln35FChlNI\/AAAAAAAAAGI\/KYZLHb3LEFA\/s320\/MAT_Retained_Set.png\" width=\"229\" \/><\/a><\/div>\n<p>Perhaps you can\u2019t understand why there are so many instances of a  particular object type in your heap dump, feeling that they should be  short-lived or limited in quantity.  The \u201cPath to GC Roots\u201d (available  when selecting a single object instance) and \u201cMerge Shortest Path to GC  Roots\u201d (for multiple instances) give you a view of the objects in  question that allows you to see which objects are maintaining references  to the object(s) in question.<\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/4.bp.blogspot.com\/-EblV09f67CM\/Tln4tNXDqmI\/AAAAAAAAAGQ\/HAQmdtHwHsU\/s1600\/MAT_Path_GC_Root.png\"><img decoding=\"async\" border=\"0\" height=\"91\" src=\"http:\/\/4.bp.blogspot.com\/-EblV09f67CM\/Tln4tNXDqmI\/AAAAAAAAAGQ\/HAQmdtHwHsU\/s320\/MAT_Path_GC_Root.png\" width=\"320\" \/><\/a><\/div>\n<p>With these tools, views and filters, I\u2019ve not found it necessary to  use some of the other features of MAT but by all means, take a look at  OQL (SQL style ability to query the heap details), Histograms and even  specialized Java Collections usage details.<\/p>\n<p>Once you have a class you\u2019d like to investigate at the code level,  assuming you have the source code in your workspace, right-click the  class from any of these views and select \u201cOpen Source File\u201d.<\/p>\n<p>I\u2019ve been able to successfully use MAT to pinpoint memory problems in  applications that I had very little exposure to.  It provides a  concrete memory overview that doesn\u2019t show bias when long-time project  developers may be inclined to do so.  If you happen to have a decent  understanding of your application, even better.  That knowledge will  help you put context around some of the data MAT shows you.  What\u2019s your  experience with MAT been?<\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/www.carfey.com\/blog\/eclipse-and-memory-analyzer-mat\/\">Eclipse and Memory Analyzer (MAT)<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a>s at the <a href=\"http:\/\/www.carfey.com\/blog\/\">Carfey Software blog<\/a>.<\/p>\n<div style=\"margin: 0px\"><strong><i>Related Articles :<\/i><\/strong><\/div>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-how-attach-java-source.html\">Eclipse: How attach Java source<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/06\/debug-production-server-eclipse.html\">Debugging a Production Server &#8211; Eclipse and JBoss showcase<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/07\/java-tools-source-code-optimization-and.html\">Java Tools: Source Code Optimization and Analysis<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/07\/gwt-2-spring-3-jpa-2-hibernate-35.html\">GWT 2 Spring 3 JPA 2 Hibernate 3.5 Tutorial \u2013 Eclipse and Maven 2 showcase<\/a> <\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe or a lot of painful and inefficient attempts to recreate the issue. Even if the problem were easy to recreate, unless the problem was blatantly obvious, your application might &hellip;<\/p>\n","protected":false},"author":59,"featured_media":110,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[29,221],"class_list":["post-496","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development","tag-eclipse","tag-mat"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Eclipse Memory Analyzer (MAT) - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eclipse Memory Analyzer (MAT) - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2011-08-28T11:20:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T20:04:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Flichel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Flichel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html\"},\"author\":{\"name\":\"Craig Flichel\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c1bcd58320330b548e07d846510f9460\"},\"headline\":\"Eclipse Memory Analyzer (MAT)\",\"datePublished\":\"2011-08-28T11:20:00+00:00\",\"dateModified\":\"2012-10-21T20:04:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html\"},\"wordCount\":798,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/eclipse-logo.jpg\",\"keywords\":[\"Eclipse\",\"MAT\"],\"articleSection\":[\"Software Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html\",\"name\":\"Eclipse Memory Analyzer (MAT) - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/eclipse-logo.jpg\",\"datePublished\":\"2011-08-28T11:20:00+00:00\",\"dateModified\":\"2012-10-21T20:04:36+00:00\",\"description\":\"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/eclipse-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/eclipse-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/08\\\/eclipse-memory-analyzer-mat.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Development\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/software-development\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Eclipse Memory Analyzer (MAT)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c1bcd58320330b548e07d846510f9460\",\"name\":\"Craig Flichel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"caption\":\"Craig Flichel\"},\"sameAs\":[\"http:\\\/\\\/www.carfey.com\\\/blog\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Craig-Flichel\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Eclipse Memory Analyzer (MAT) - Java Code Geeks","description":"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html","og_locale":"en_US","og_type":"article","og_title":"Eclipse Memory Analyzer (MAT) - Java Code Geeks","og_description":"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe","og_url":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-08-28T11:20:00+00:00","article_modified_time":"2012-10-21T20:04:36+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg","type":"image\/jpeg"}],"author":"Craig Flichel","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Craig Flichel","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html"},"author":{"name":"Craig Flichel","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c1bcd58320330b548e07d846510f9460"},"headline":"Eclipse Memory Analyzer (MAT)","datePublished":"2011-08-28T11:20:00+00:00","dateModified":"2012-10-21T20:04:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html"},"wordCount":798,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg","keywords":["Eclipse","MAT"],"articleSection":["Software Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html","url":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html","name":"Eclipse Memory Analyzer (MAT) - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg","datePublished":"2011-08-28T11:20:00+00:00","dateModified":"2012-10-21T20:04:36+00:00","description":"In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/eclipse-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/08\/eclipse-memory-analyzer-mat.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Software Development","item":"https:\/\/www.javacodegeeks.com\/category\/software-development"},{"@type":"ListItem","position":3,"name":"Eclipse Memory Analyzer (MAT)"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c1bcd58320330b548e07d846510f9460","name":"Craig Flichel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","caption":"Craig Flichel"},"sameAs":["http:\/\/www.carfey.com\/blog\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Craig-Flichel"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/59"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=496"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/110"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}