{"id":33206,"date":"2023-11-14T06:58:44","date_gmt":"2023-11-14T11:58:44","guid":{"rendered":"https:\/\/www.eginnovations.com\/blog\/?p=33206"},"modified":"2023-11-14T07:22:58","modified_gmt":"2023-11-14T12:22:58","slug":"java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale","status":"publish","type":"post","link":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/","title":{"rendered":"Java Application Monitoring &#8211; How IT Ops can Diagnose Memory Leaks at Scale"},"content":{"rendered":"<div class=\"inner_content\">\n<p>Many server-side applications are written in Java and often process tens of millions of requests per day. Key applications in various domains like finance, healthcare, insurance and education are often Java-based. When these applications slow down or fail, they affect the user experience and in turn, reduce business revenue.<\/p>\n<p>Behind many web forms or form-like GUIs there will often be a Java application. Deployed at scale on application servers such as Apache Tomcat, IBM WebSphere, Oracle WebLogic or Red Hat JBoss, administrators face challenges to identify rogue applications and whether the classes and objects within them are leaking memory.<\/p>\n<p>Ideally bugs and faults in applications should be identified in development or in subsequent QA, but in practice administrators are often presented with applications from third-parties or different internal teams that they need to test in pre-production and if problems are found, gather sufficient detail for the app development team to reproduce and understand.<\/p>\n<p style=\"margin-bottom: 15px;\">In this blog, I\u2019ll cover:<\/p>\n<ul>\n<li>What the challenges are debugging Java memory leaks at scale<\/li>\n<li>How an administrator can use eG Enterprise to identify Java web applications that are leaking heap memory on an application server such as Apache Tomcat, IBM WebSphere, Oracle WebLogic or JBoss.<\/li>\n<li>Walk through a simple example of a heap memory leak to show how eG Enterprise\u2019s Java application monitoring can be used to undertake pre-production testing by an administrator to identify applications with heap memory leaks and subsequently the specific area of code within a specific application with sufficient information regarding the leak at scale to raise a ticket with the app development team in the event the issue may very well not reproduce in the development test or QA environment<\/li>\n<li>Include details of how we modify code to deliberately introduce memory leaks within test environments to create controlled memory leaks to test our root cause analysis capabilities<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"The_problem_for_IT_Operations_-_JVMs_at_scale\"><\/span>The problem for IT Operations \u2013 JVMs at scale<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Java memory leaks often go unnoticed during development, particularly when they occur gradually over an extended period. In a controlled development environment, small and slow memory leaks can easily be overshadowed by the overall memory usage of the application. However, when deploying applications at scale, especially within frameworks like Kubernetes or containers that run continuously across multiple worker nodes, these leaks can accumulate rapidly and ultimately affect the application performance.<\/p>\n<p>IT Operations teams must navigate through the complexities of large-scale deployments, where even minor memory leaks can have a significant impact on system performance and reliability. You need proactive monitoring and precise root-cause analysis to ensure smooth operations and meet service level agreements (SLAs).<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/white-paper\/how-to-get-full-stack-visibility-for-your-java-applications\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-33245\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/full-stack-java-Banner.jpg\" alt=\"\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_dreaded_OutOfMemoryError\"><\/span>The dreaded OutOfMemoryError<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When the heap memory is exhausted, new requests for memory start to fail (OutOfMemoryError errors may be seen) and these can be very hard to identify as the symptoms and the symptoms manifested are often similar to many other IT issues. When an application can no longer acquire memory, it could lead to a form not responding and the user seeing a spinning icon or a total crash of applications. The applications exhibiting problems may not be the actual application that is leaking memory but may also share many services and frameworks with the problem application. The <a href=\"https:\/\/www.eginnovations.com\/blog\/what-is-garbage-collection-java\/\/\">garbage collector<\/a> within the Java Virtual Machine (JVM) will become aware of a critical memory shortage and will try to reclaim memory in turn leading to an increase in CPU usage which in turn may cause other symptoms and secondary issues. These symptoms though are generic to a wide range of root cause issues such as networking or storage failures or an unavailable database.<\/p>\n<p>The infrastructure and IT teams responsible for deploying the application will rarely be the development team for the app and with so many third-party applications in use, may not even work for the same company. Typically, the system administrator will have sufficient information to know that the system is out of memory and maybe a user has reported \u201cThe application MyFinanceApp keeps crashing\u201d. At this point organizations often get involved in lengthy support ticket conversations with the supplier of MyFinance App, whose development team can find no evidence of the reported issue \u201cThis app keeps crashing\u201d.<\/p>\n<p>In this scenario it could be the case that there is in fact a memory leak in a different Java app \u201cMyHRApp\u201d depriving the other app of memory, the admin needs to identify this is the case but also provide enough evidence to raise a support case. Remembering that this is an issue that has evaded the development testing, even when the correct problematic application has been identified, it is possible the development team do not have access to comparable infrastructure and the support case degenerates into cycles of \u201cCannot reproduce\u201d to-and-fro between the infrastructure and development teams, for organizations supporting in-house apps this means two internal teams wasting time and goodwill. Development teams are likely to be frustrated by the lack of expertise or debug tools in the infrastructure team to pinpoint where an issue is likely to be, whilst they are faced with potentially hundreds of thousands of lines of code involving calls to external libraries and frameworks and no evidence there is actually any issue in any of these.<\/p>\n<p>IT operations, application operations and DevOps teams often spend days troubleshooting Java application performance issues. Since Java applications are multi-threaded and involve multi-tier architectures, it is a challenge to identify whether the problem is due to the client, the network, in the JVM, in the application code, with the SQL query, or in the underlying infrastructure. Monitoring of the Java application stack end-to-end in the production environment is necessary to identify issues, moreover the monitoring platform needs to root cause issues to the infrastructure administrator with minimal or knowledge of Java and provide them with enough information to identify the code owner and give them details of where in the application the memory leak is. It is very common to see questions such as:<\/p>\n<p><em> \u201cWe have a tomcat server serving several web applications. With jconsole I can see that the heap memory grows over time. We had some crashes with an OutOfMemoryError for the heap memory after about one day. Platform: SLES 12 SP3, Tomcat 8<\/em><\/p>\n<p><a href=\"https:\/\/superuser.com\/questions\/1436222\/how-to-troubleshoot-a-memory-leak-in-tomcat-applications\" target=\"blank\" rel=\"noopener\">Is it possible to determine which of our web applications is causing a memory leak with a tool?\u201d<\/a> on StackExchange and other community forums.<\/p>\n<p>We have provided functionality within eG Enterprise that will allow system administrators to run overnight or soak tests in their pre-production and staging environments to test apps they are introducing into production for numerous common Java faults. This article covers just a specific example of how a heap memory leak can be simulated and subsequently identified using eG Enterprise prior to release.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Root_Causing_a_Java_application_memory_leak_by_the_system_administrator\"><\/span>Root Causing a Java application memory leak by the system administrator<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>As with all of the 500+ technologies we monitor, a specialized component for Java applications is used within our layer model, under-the-hood <a href=\"https:\/\/www.eginnovations.com\/blog\/aiops-artificial-intelligence-it-operations\/\">a powerful AIOps platform<\/a> correlates and filters events and performs Root Cause Analysis (RCA) and automated diagnostic to identify to the system administrator operating the console where the issue lies.<\/p>\n<p>A slow Java memory leak was caused within an application that caused it to allocate memory from the heap memory when run within the JVM but never release it. As this shared heap memory resource is utilized by numerous applications, we need to identify the application and Java class that contains the leak.<\/p>\n<p>Without dedicated APM tools, a system administrator would need to identify excessive memory usage is occurring, take a heap dump from the JVM, analyze the dump using a tool like the <a href=\"https:\/\/www.eclipse.org\/mat\/\" target=\"blank\" rel=\"noopener\">Eclipse Memory Analyzer<\/a> and identify objects that are taking up an unusual amount of memory to identify the coding issue. These are all developer domain tools and workflows for an administrator whose core role is deployment and ensuring availability. Below we\u2019ll show you how we present the system administrator with a simple layered view requiring minimal knowledge of the JVM or other layers to identify the leaking code objects.<\/p>\n<p>The test stack we used is a typical enterprise scale web application architecture. <a href=\"https:\/\/www.eginnovations.com\/blog\/tomcat-performance-tuning\/\">Apache Tomcat<\/a> containers are used to deploy web applications, the containers themselves run on the JVM (Java Virtual Machine).<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy-view.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33227 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy.webp\" alt=\"Screenshot of a topology map in eG Enterprise showing the interdependencies of a Java app, overlaid with an alert window warning of a memory leak\" width=\"750\" height=\"482\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy.webp 750w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy-300x193.webp 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy-310x199.webp 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/memory-leak-topplogy-140x90.webp 140w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<div class=\"img_caption\">Figure 1: IT Operations get precise and pinpointed alerts on a topology indicating memory leaks. In this example, the ecommerce-cart application is seen to be exhibiting symptoms of a memory leak.<\/div>\n<div class=\"img_caption\"><\/div>\n<p>Out-of-the-box thresholds are built-in to trigger when issues like a memory leak cause key metrics to cross thresholds, in this case the low heap memory from running our leaky code. The AIOps platform will filter and prioritize alerts having identified other issues as secondary issues or symptoms. This means the operator does not get distracted or waste time by an alert storm from the non-responsiveness or failure of other applications impacted by a lack of available heap memory.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33281\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/layers-of-JVM-1.webp\" alt=\"\" width=\"408\" height=\"444\" \/><\/p>\n<div class=\"img_caption\">Figure 2: Within the JVM layer eG Enterprise tests continually probe memory usage alongside other key metrics and events associated with resources, Garbage Collection, threads and others.<\/div>\n<div>\n<p>eG Enterprise has out-of-the-box thresholds that are built-in to trigger issues like a memory leak that can cause key metrics to cross thresholds, in this case the low heap memory from running our leaky code. The AIOps platform will filter and prioritize alerts having identified other issues as secondary issues or symptoms. This means the operator does not get distracted or waste time by an alert storm from the non-responsiveness or failure of other applications impacted by a lack of available heap memory.<\/p>\n<\/div>\n<p>In eG Enterprise you can specify three maximum and\/or three minimum threshold values on metrics and signals, in the format: Critical\/Major\/Minor which allows escalation and proactive detection before applications \/ users are impacted. Root Cause Analysis (RCA) means the operator will be presented with an alert window upfront thus:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33231\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/component-alerts.webp\" alt=\"\" width=\"749\" height=\"161\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/component-alerts.webp 749w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/component-alerts-300x64.webp 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/component-alerts-310x67.webp 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/component-alerts-140x30.webp 140w\" sizes=\"auto, (max-width: 749px) 100vw, 749px\" \/><\/p>\n<div class=\"img_caption\">Figure 3: In this case a memory leak in a web application has been allowed to run for a while and has reached a Major alert level, the operator ignored an earlier Minor alert to see if the issue would resolve itself.<\/div>\n<p>Routine medical screening checks are normal in healthcare. If a patient\u2019s vital signs are normal, no further investigation is needed. However, if any abnormality is detected, additional tests and investigations will be made. The same analogy also holds for IT monitoring also. Routine tests check key parameters regarding the applications and the infrastructure supporting them. These tests are designed to impose minimal overhead on the target environment. If anomalies or problems arise, additional diagnosis is performed to collect more details about a problem. eG routinely monitors key metrics of the JVM including the heap memory. If there is a suspected JVM memory leak further diagnosis tests can be performed to identify which specific classes and objects may be leaking memory using the <a href=\"https:\/\/www.eginnovations.com\/documentation\/Java-Application\/JVM-Leak-Suspects-Test.htm\">\u201cJVM Leak Suspects Test\u201d.<\/a> This is a heavyweight test and designed for use in pre-production once a potential leak is suspected and essentially automates the process of examining the heap memory dump of the JVM. Since eG Enterprise supports multiple flavors of the JVM, this eliminates the need for JVM specific domain knowledge to process and understand proprietary log formats.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_to_make_Java_application_memory_leaks_to_test_leak_detection_monitoring\"><\/span>How to make Java application memory leaks to test leak detection monitoring<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>To test memory leak detection, we have collected in-house a number of real-world applications with known issues, but we also build some test applications.<\/p>\n<p>If you want to do this yourself you could simply include code to allocate an integer, this actually works quite well as it gradually causes a heap memory issue at a sensible pace so you can investigate how a monitoring system performs, how early it detects the issue etc. Once you\u2019ve done this you could of course tweak the code so control the pace using wait() calls or using a larger variable type e.g., a Double or String vs. an Integer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"311\" class=\"aligncenter size-full wp-image-33241\" style=\"width: 600px;\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/snippet-code.webp\" alt=\"\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/snippet-code.webp 750w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/snippet-code-300x156.webp 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/snippet-code-310x161.webp 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/10\/snippet-code-140x73.webp 140w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<div class=\"img_caption\">Figure 4: Simple code snippet to add a memory leak to a Java application<\/div>\n<div class=\"containers mb-4\" style=\"clear:both\">\n \t<div class=\"fixed-free-trial-div mb-3\" id=\"fixedsectioninfo_blog_btn\">\n \t\n \t<style>.containers_hide_row,.all_blogs_bottom{\n \tdisplay:none;\n   \n}\t<\/style>\n                <div class=\"box-style container row pt-4 pb-4  animatedParent animateOnce\" data-sequence=\"100\" style=\"border-bottom: 1px solid #ddd;border-top: 1px solid #ddd;background: #4b4b4b;padding: 15px 15px 0 15px;border-radius: 12px;\">\n                \n                <div class=\"text-center animated fadeIn go\"> \n                <p class=\"text-center mb-4\" style=\"    color: #fff;\">\n\neG Enterprise is an Observability solution for Modern IT. Monitor digital workspaces, <br\/>web applications, SaaS services, cloud and containers from a single pane of glass.\n<\/p>\n                <\/div>\n                    <div class=\"text-center pb-1 animated fadeIn go\" data-id=\"8\">\n                        <a class=\"border-btnhead-eg\"  href=\"https:\/\/www.eginnovations.com\/it-monitoring\/free-trial\"> <span style=\"font-family: GraphikMedium!important;color: #fff;\">Free Trial<\/span><\/a>\n                        <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/java-performance-monitoring\" class=\" border-btnhead-eg\" style=\"width:230px;   \"> <svg width=\"24\" height=\"24\" style=\"margin-top:-3px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 26.5 26.5\" style=\"enable-background:new 0 0 26.5 26.5;\" xml:space=\"preserve\">\n<style type=\"text\/css\">\n\t.st2{fill:#fff !important;stroke:#fff !important;stroke-miterlimit:10;}\n\t\n\t\t.border-btnhead:hover .st2 {\n  fill: #ffffff !important;\n  stroke: #ffffff;\n}\n<\/style>\n<g>\n\t<g>\n\t\t<path class=\"st2\" d=\"M13.3,25.8c-6.9,0-12.5-5.6-12.5-12.5S6.4,0.8,13.3,0.8s12.5,5.6,12.5,12.5S20.2,25.8,13.3,25.8z M13.3,1.8\n\t\t\tC6.9,1.8,1.8,6.9,1.8,13.3S7,24.8,13.3,24.8s11.5-5.2,11.5-11.5S19.6,1.8,13.3,1.8z M11.2,18.1c-0.2,0-0.4-0.1-0.6-0.2\n\t\t\tc-0.3-0.2-0.6-0.6-0.6-1V9.7c0-0.4,0.2-0.8,0.6-1c0.3-0.2,0.8-0.2,1.2,0l6.2,3.6c0.3,0.2,0.6,0.6,0.6,1s-0.2,0.8-0.6,1l-6.2,3.6\n\t\t\tC11.6,18,11.4,18.1,11.2,18.1z\"\/>\n\t<\/g>\n<\/g>\n<\/svg> <span style=\"font-family: GraphikMedium!important;color: #fff;\">&nbsp;See the platform<\/span><\/a>\n                    <\/div>\n                <\/div>\n                \n                 <\/div>\n            <\/div>\n<h2><span class=\"ez-toc-section\" id=\"More_information\"><\/span>More information<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p style=\"margin_bottom: 15px;\">If you found this article useful, you might like to check out:<\/p>\n<ul>\n<li>Vinod Mohan\u2019s blog &#8211; <a href=\"https:\/\/www.eginnovations.com\/blog\/top-10-java-performance-problems\/\">Top 10 Java Performance Problems<\/a><\/li>\n<li>Abhilash Warrier\u2019s article that details <a href=\"https:\/\/www.eginnovations.com\/blog\/free-java-monitoring-tools-pros-cons\/\">Free Java Monitoring Tools \u2013 Pros and Cons<\/a> and contains links to free heap analysis tools<\/li>\n<li><a href=\"https:\/\/www.eginnovations.com\/blog\/what-is-garbage-collection-java\/\/\">What is Garbage Collection in Java: Detailed Guide<\/a><\/li>\n<li>There\u2019s a fantastic article on Baeldung &#8211; <a href=\"https:\/\/www.baeldung.com\/java-memory-leaks\" target=\"blank\" rel=\"noopener\">\u201cUnderstanding Memory Leaks in Java\u201d,<\/a> which covers the anatomy of Java memory leaks and debugging them, frequent coding mistakes that cause them and coding practices that can help avoid them<\/li>\n<li>Common misunderstanding around Java memory leaks are covered in: <a href=\"https:\/\/www.eginnovations.com\/blog\/7-myths-of-java-memory-leaks-what-sres-need-to-know-and-communicate\/\">Java Memory Leak: 7 Myths that SREs Need to Know<\/a><\/li>\n<li>Other blogs from Vinod on <a href=\"https:\/\/www.eginnovations.com\/blog\/java-threads\/\">Java thread monitoring,<\/a> <a href=\"https:\/\/www.eginnovations.com\/blog\/troubleshoot-java-cpu-issues\/\">How to Troubleshoot Java CPU Usage Issues<\/a> and <a href=\"https:\/\/www.eginnovations.com\/blog\/java-synchronized-blocks\/\">Why and How to Troubleshoot Java Synchronization Issues?<\/a><\/li>\n<li>Arun\u2019s article on <a href=\"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/\">Troubleshooting Java Application Deadlocks &#8211; Diagnosing \u2018Application Hang\u2019 Situations<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Many server-side applications are written in Java and often process tens of millions of requests per day. Key applications in various domains like finance, healthcare, insurance and education are often Java-based. When these applications slow down or fail, they affect the user experience and in turn, reduce business revenue. Behind many web forms or form-like [&hellip;]<\/p>\n","protected":false},"author":51,"featured_media":33384,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_lmt_disableupdate":"yes","_lmt_disable":"","footnotes":""},"categories":[27],"tags":[175,2039,2020,176,1363,578,464],"class_list":["post-33206","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-monitoring","tag-java-application-performance-monitoring","tag-java-memory","tag-java-memory-leak-detection","tag-java-monitoring","tag-java-out-of-memory","tag-jvm-monitoring","tag-tomcat-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Application Monitoring - How IT Ops can Diagnose Memory Leaks at Scale | eG Innovations<\/title>\n<meta name=\"description\" content=\"How IT Ops can debug and source Java application memory leaks in pre-production and production systems without developer tools.\" \/>\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.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Application Monitoring \u2013 How IT Ops can Diagnose Memory Leaks at Scale\" \/>\n<meta property=\"og:description\" content=\"How IT Ops can debug and source Java application memory leaks in pre-production and production systems without developer tools.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/\" \/>\n<meta property=\"og:site_name\" content=\"eG Innovations\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eGInnovations\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-14T11:58:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-14T12:22:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-social.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gokulanand N\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Java Application Monitoring \u2013 How IT Ops can Diagnose Memory Leaks at Scale\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-social.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:site\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gokulanand N\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java Application Monitoring - How IT Ops can Diagnose Memory Leaks at Scale | eG Innovations","description":"How IT Ops can debug and source Java application memory leaks in pre-production and production systems without developer tools.","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.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/","og_locale":"en_US","og_type":"article","og_title":"Java Application Monitoring \u2013 How IT Ops can Diagnose Memory Leaks at Scale","og_description":"How IT Ops can debug and source Java application memory leaks in pre-production and production systems without developer tools.","og_url":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/","og_site_name":"eG Innovations","article_publisher":"https:\/\/www.facebook.com\/eGInnovations","article_published_time":"2023-11-14T11:58:44+00:00","article_modified_time":"2023-11-14T12:22:58+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-social.jpg","type":"image\/jpeg"}],"author":"Gokulanand N","twitter_card":"summary_large_image","twitter_title":"Java Application Monitoring \u2013 How IT Ops can Diagnose Memory Leaks at Scale","twitter_image":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-social.jpg","twitter_creator":"@eginnovations","twitter_site":"@eginnovations","twitter_misc":{"Written by":"Gokulanand N","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#article","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/"},"author":{"name":"Gokulanand N","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/4666a30d6f3450a07b70a253e8a56b1a"},"headline":"Java Application Monitoring &#8211; How IT Ops can Diagnose Memory Leaks at Scale","datePublished":"2023-11-14T11:58:44+00:00","dateModified":"2023-11-14T12:22:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/"},"wordCount":2143,"publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-thumbnail.jpg","keywords":["java application performance monitoring","java memory","java memory leak detection","Java Monitoring","Java out of memory","JVM Monitoring","Tomcat monitoring"],"articleSection":["Java Monitoring"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/","url":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/","name":"Java Application Monitoring - How IT Ops can Diagnose Memory Leaks at Scale | eG Innovations","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#primaryimage"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-thumbnail.jpg","datePublished":"2023-11-14T11:58:44+00:00","dateModified":"2023-11-14T12:22:58+00:00","description":"How IT Ops can debug and source Java application memory leaks in pre-production and production systems without developer tools.","breadcrumb":{"@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#primaryimage","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-thumbnail.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2023\/11\/java-thumbnail.jpg","width":362,"height":235,"caption":"java-thumbnail"},{"@type":"BreadcrumbList","@id":"https:\/\/www.eginnovations.com\/blog\/java-application-monitoring-how-it-ops-can-diagnose-memory-leaks-at-scale\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.eginnovations.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java Application Monitoring &#8211; How IT Ops can Diagnose Memory Leaks at Scale"}]},{"@type":"WebSite","@id":"https:\/\/www.eginnovations.com\/blog\/#website","url":"https:\/\/www.eginnovations.com\/blog\/","name":"eG Innovations","description":"IT Performance Monitoring Insights","publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.eginnovations.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.eginnovations.com\/blog\/#organization","name":"eG Innovations","alternateName":"eg innovations","url":"https:\/\/www.eginnovations.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","width":362,"height":235,"caption":"eG Innovations"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eGInnovations","https:\/\/x.com\/eginnovations"]},{"@type":"Person","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/4666a30d6f3450a07b70a253e8a56b1a","name":"Gokulanand N","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/38afe2decf1c1bb112f8308de10e1953?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/38afe2decf1c1bb112f8308de10e1953?s=96&d=mm&r=g","caption":"Gokulanand N"},"url":"https:\/\/www.eginnovations.com\/blog\/author\/gokulanand\/"}]}},"modified_by":"Review eG","_links":{"self":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/33206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/users\/51"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/comments?post=33206"}],"version-history":[{"count":0,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/33206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media\/33384"}],"wp:attachment":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media?parent=33206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/categories?post=33206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/tags?post=33206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}