{"id":7165,"date":"2018-08-20T03:11:19","date_gmt":"2018-08-20T07:11:19","guid":{"rendered":"https:\/\/www.eginnovations.com\/blog\/?p=7165"},"modified":"2022-10-31T08:44:46","modified_gmt":"2022-10-31T12:44:46","slug":"troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations","status":"publish","type":"post","link":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/","title":{"rendered":"Troubleshooting Java Application Deadlocks \u2013 Diagnosing \u2018Application Hang\u2019 Situations"},"content":{"rendered":"<h2 class=\"notopmargin\"><span class=\"ez-toc-section\" id=\"A_Typical_Production_Scenario_How_Do_You_Handle_Complaints_of_Slow_Java_Applications\"><\/span>A Typical Production Scenario: How Do You Handle Complaints of Slow Java Applications?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>It is 2 am in the morning and you get woken up by a phone call from the helpdesk team. The helpdesk is receiving a flood of calls from application users complaining about <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/java-application-monitoring\">slow Java applications<\/a> that are business impacting. Users are complaining that the browser keeps spinning and eventually all they see is a \u2018white page\u2019.<\/p>\n<p>Still somewhat heavy-eyed, you go through the \u2018standard operating procedure\u2019. You notice that no TCP traffic is flowing to or from the app server cluster. The application logs aren\u2019t moving either.<\/p>\n<p>You are wondering what could be wrong when the VP of IT Operations, pings you over Instant Messenger asking you to join a war room conference call. You will be asked to provide answers and <a href=\"https:\/\/www.eginnovations.com\/blog\/\">pinpoint the root cause<\/a> of why your Java applications are slow \u2013 fast.<\/p>\n<p>This is a classic case of application hang due to a deadlock of threads in the <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/jvm-monitoring\">Java Virtual Machine (JVM)<\/a>. This blog will explain what Java application deadlocks are, why they happen and summarize the repercussions of deadlocks and provide options to diagnose and troubleshoot them to ensure that you don&#8217;t have slow Java applications. Read on.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/white-paper\/java-application-performance\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-19985\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3.jpg\" alt=\"\" width=\"850\" height=\"200\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3.jpg 850w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3-300x71.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3-768x181.jpg 768w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3-800x188.jpg 800w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3-310x73.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-whitepaper-3-140x33.jpg 140w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"What_are_Java_Application_Deadlocks\"><\/span>What are Java Application Deadlocks?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/deadlock.jpg\" alt=\"Slow Java applications due to deadlocks\" width=\"300\" height=\"181\" border=\"0\" \/><\/p>\n<p>A deadlock occurs when two or more <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/jvm-monitoring\">threads in the JVM<\/a> form a cyclic dependency with each other. In this illustration \u2018thread 2\u2019 is in a wait state, waiting on Resource A owned by \u2018thread 1\u2019, while \u2018thread 1\u2019 is in a wait state, waiting on Resource B owned by \u2018thread 2\u2019. In such a condition, these two threads are \u2018hanging\u2019 indefinitely without making any further progress. This results in an \u201capplication hang\u201d where the application process is running but the system is not responding to user requests.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 5px;\">\n<p style=\"margin-bottom: 15px;\">\u201cThe JVM is not nearly as helpful in resolving deadlocks as database servers are. When a set of Java threads deadlock, that\u2019s the end of the game. Depending on what those threads do, the application may stall completely.\u201d<\/p>\n<p align=\"right\">Brian G\u00f6etz, Author of <a href=\"https:\/\/www.amazon.in\/Java-Concurrency-Practice-Brian-Goetz\/dp\/0321349601\" target=\"_blank\" rel=\"noopener noreferrer\">Java Concurrency in Practice<\/a><\/p>\n<\/div>\n<p><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Main_Consequences_of_Java_Application_Deadlocks\"><\/span>Main Consequences of Java Application Deadlocks<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Poor_User_Experience\"><\/span><b class=\"sec-title\">1. Poor User Experience<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When a deadlock happens, the application may stall or become very slow. Typical symptoms could be \u201cwhite pages\u201d in web applications while the browser continues to spin eventually resulting in a timeout. Often, users might attempt to retry their request by clicking refresh or resubmitting a form, which compounds the <a href=\"https:\/\/www.eginnovations.com\/blog\/top-10-java-performance-problems\/\" target=\"_self\" rel=\"noopener noreferrer\">Java performance problem<\/a> further.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_System_Undergoes_Exponential_Degradation\"><\/span><b class=\"sec-title\">2. System Undergoes Exponential Degradation<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When threads go into a deadlock situation, they take longer to respond. In the intervening period, a fresh set of requests may arrive into the system.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/thread-deadlock.png\" alt=\"Deadlocks cause slow Java applications \u2013 Diagnosis and Troubleshooting diagram\" width=\"600\" height=\"219\" border=\"0\" \/><\/p>\n<p>When deadlocks manifest in application servers, fresh requests will get backed up in the \u2018execution queue\u2019. The application server\u2019s thread pool will hit the max utilization, thereby denying service to new requests. This causes further exponential degradation of performance.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Cascading_Impact_on_the_Entire_Application_Server_Cluster\"><\/span><b class=\"sec-title\"> 3. Cascading Impact on the Entire Application Server Cluster<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/app-server-cluster.jpg\" alt=\"Pinpointing the reason for slow Java applications\" width=\"200\" height=\"115\" \/><\/p>\n<p>In multi-tier applications, web servers (such as Apache or IBM HTTP Server) receive requests and forward it to application servers (such as WebLogic, WebSphere or JBoss) via a \u2018plug-in\u2019. If the plug-in detects that the application server is unhealthy, it will \u201cfail-over\u201d to another healthy application server which will accept heavier loads than usual thus resulting in further slowness. This may cause a cascading slowdown effect on the entire cluster.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Challenges_with_Troubleshooting_Deadlocks_in_a_Clustered_Multi-tier_Environment\"><\/span>Challenges with Troubleshooting Deadlocks in a Clustered, Multi-tier Environment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/mutli-tire.jpg\" alt=\"\" width=\"200\" height=\"115\" border=\"0\" \/><\/p>\n<p style=\"margin-bottom: 15px;\">Application support teams are usually caught off-guard when faced with deadlocks in production environments. There are there main scenarios when it becomes difficult to detect deadlocks.<\/p>\n<ul>\n<li>Deadlocks typically do not exhibit typical symptoms such as a spike in CPU or Memory. This makes it hard to track and diagnose deadlocks based on basic operating system metrics.<\/li>\n<li>Deadlocks may not show up until the application is moved to a clustered environment. Single application server environments may not manifest latent defects in the code.<\/li>\n<li>Deadlocks usually manifest in the worst possible time \u2013 heavy production load conditions. They may not show up in low or moderate load conditions. They are also difficult to replicate in a testing environment because of the same load condition reasons.<\/li>\n<\/ul>\n<div class=\"tips-box\" style=\"padding: 25px 20px;\"><a class=\"tweet-box\" style=\"height: 132px;\" href=\"https:\/\/ctt.ac\/2Wm98\" target=\"_blank\" rel=\"noopener noreferrer\">Check out this blog and learn how to put an end to those pesky #Java deadlocks and application hangs. Get tips to make your Java application performance better.<br \/>\n#JavaDeveloper #JavaProgramming <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2017\/06\/tweet.png\" alt=\"Click to Tweet\" width=\"89\" height=\"18\" border=\"0\" align=\"right\" \/> <\/a><\/div>\n<p><\/p>\n<h2><span class=\"ez-toc-section\" id=\"So_How_to_Diagnose_and_Troubleshoot_Java_Application_Deadlocks\"><\/span>So, How to Diagnose and Troubleshoot Java Application Deadlocks?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p style=\"margin-bottom: 15px;\">There are various options available to troubleshoot deadlock situations that could result in slow Java applications.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_The_naive_way_Kill_the_process_and_cross_your_fingers\"><\/span><b class=\"sec-title\">1. The na\u00efve way: Kill the process and cross your fingers<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You could kill the application server process and hope that when the application server starts again, the problem will go away. However, restarting the application server is a temporary fix that will not resolve the root-cause. Deadlocks could get triggered again when the application server comes back up.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_The_laborious_way_Take_thread_dumps_in_your_cluster_of_JVMs\"><\/span><b class=\"sec-title\">2. The laborious way: Take thread dumps in your cluster of JVMs<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/cluster-of-jvm.jpg\" width=\"200\" height=\"100\" border=\"0\" alt=\"\" \/><\/p>\n<p>You could take thread dumps. To trigger a thread dump, send a SIGQUIT signal to the JVM. (On UNIX, that would be a \u201ckill -3\u201d command and on Windows, that would be a \u201cCtrl-Break\u201d in the console).<\/p>\n<p>Typically, you would need to capture a series of thread dumps (example: 6 thread dumps spaced 20 seconds apart) to infer any thread patterns \u2013 just a static thread dump snapshot may not suffice.<\/p>\n<p>If you are running the application server as a Windows service (which is usually the case), it is a little more complicated. If you are running the Hotspot JVM, you could use the <i>jps<\/i> utility to find the process ID of the JVM and then use the <i>jstack<\/i> utility to take thread dumps. You can also use the <a href=\"https:\/\/www.eginnovations.com\/blog\/free-java-monitoring-tools-pros-cons\/\"><i>jconsole<\/i> utility<\/a> to connect to the JVM process in question.<\/p>\n<p>Then, you would have to forward the thread dumps to the development team and wait for them to analyze and get back. Depending on the size of the cluster, there would be multiple files to trawl through and this might entail significant time.<\/p>\n<p>This is not an optimal situation you want to be at 2 am in the morning when the business team from another country is waiting on a quick resolution.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 15px;\">\n<h4 class=\"tips-title\" style=\"margin-bottom: 15px;\"><span class=\"ez-toc-section\" id=\"Manual_Processes_to_troubleshoot_Java_application_deadlocks_can_be_time_consuming\"><\/span><strong>Manual Processes to troubleshoot Java application deadlocks can be time consuming<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/manual-process.png\" alt=\"\" width=\"200\" height=\"139\" border=\"0\" \/><\/p>\n<p style=\"margin-bottom: 15px;\">The manual approach of taking thread dumps assumes that <i>you know which JVM(s)<\/i> is (are) suffering from deadlocks. Chances are that the application is hosted in a high-availability, clustered Application Server farm with tens (if not hundreds) of servers.<\/p>\n<p style=\"margin-bottom: 15px;\">If only a subset of JVMs are undergoing the deadlock problem, you may not be in a position to precisely know which JVM is seeing thread contention or deadlocks. You would have to resort to taking thread dumps across all of your JVMs.<\/p>\n<p style=\"margin-bottom: 15px;\">This becomes a trial-and-error approach which is both laborious and time-consuming. While this approach may be viable for a development or staging environment, it is not viable for a business-critical production environment where \u2018Mean-Time-To-Repair\u2019 (MTTR) is key.<\/p>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_The_smart_way_Leverage_an_APM_solution_for_monitoring_JVM_threads\"><\/span><b class=\"sec-title\">3. The smart way: Leverage an APM solution for monitoring JVM threads<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>There are many <a href=\"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/\">application performance monitoring<\/a> (APM) tools that provide <a href=\"https:\/\/www.eginnovations.com\/blog\/java-code-level-visibility\/\" target=\"_self\" rel=\"noopener noreferrer\">code-level<\/a> and <a href=\"https:\/\/www.eginnovations.com\/blog\/jvm-monitoring-and-performance-assurance-for-java-based-banking-and-trading-applications\/\" target=\"_self\" rel=\"noopener noreferrer\">JVM-level<\/a> visibility to isolate thread deadlocks. eG Enterprise APM provides deep diagnostics of JVM threads and automatically detects deadlocks. Using distributed transaction profiling, developers can also gain method-level visibility of the Java code to isolate any bugs\/defects\/inefficiencies that may be causing issues. <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/java-application-monitoring\">Automated monitoring simplifies troubleshooting<\/a> and reduces manual analysis and prognosis.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-deadlock.png\" alt=\"Detecting java application deadlock threads\" width=\"600\" height=\"345\" border=\"0\" \/><\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/product\/application-performance-monitoring\/free-trial\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-19997 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial.jpg\" alt=\"Avoid slow java applications forever. Free trial\" width=\"850\" height=\"180\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial.jpg 850w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial-300x64.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial-768x163.jpg 768w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial-800x169.jpg 800w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial-310x66.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/free-trial-140x30.jpg 140w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Typical Production Scenario: How Do You Handle Complaints of Slow Java Applications? It is 2 am in the morning and you get woken up by a phone call from the helpdesk team. The helpdesk is receiving a flood of calls from application users complaining about slow Java applications that are business impacting. Users are [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":7167,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[27],"tags":[1505,435,556,1506,1507,1508,1504,557,176,177,555,578,179,529,1503],"class_list":["post-7165","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-monitoring","tag-application-hang","tag-java-apm","tag-java-application-deadlocks","tag-java-application-stalled","tag-java-application-unresponsive","tag-java-blocked-threads","tag-java-deadlock-thread","tag-java-deadlocks","tag-java-monitoring","tag-java-performance","tag-java-troubleshooting","tag-jvm-monitoring","tag-jvm-performance","tag-jvm-tuning","tag-what-is-a-deadlock-in-java"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Diagnose Java Application Hangs - Detect and Fix Deadlocks<\/title>\n<meta name=\"description\" content=\"Java application deadlocks cause poor user experience. See how to diagnose &amp; correct common Java deadlock problems.\" \/>\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\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Troubleshooting Java Application Deadlocks and Application Hangs | eG Innovations\" \/>\n<meta property=\"og:description\" content=\"Read this blog to understand how to troubleshoot Java deadlocks and resulting application hang issues. Improve development efficiency and application performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/\" \/>\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=\"2018-08-20T07:11:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-31T12:44:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/troubleshooting-application-deadlocks.png\" \/>\n<meta name=\"author\" content=\"Arun Aravamudhan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Troubleshooting Java Application Deadlocks and Application Hangs | eG Innovations\" \/>\n<meta name=\"twitter:description\" content=\"Read this blog to understand how to troubleshoot Java deadlocks and resulting application hang issues. Improve development efficiency and application performance.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-application-deadlocks.png\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/x.com\/perfclarity\" \/>\n<meta name=\"twitter:site\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Aravamudhan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Diagnose Java Application Hangs - Detect and Fix Deadlocks","description":"Java application deadlocks cause poor user experience. See how to diagnose & correct common Java deadlock problems.","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\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/","og_locale":"en_US","og_type":"article","og_title":"Troubleshooting Java Application Deadlocks and Application Hangs | eG Innovations","og_description":"Read this blog to understand how to troubleshoot Java deadlocks and resulting application hang issues. Improve development efficiency and application performance.","og_url":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/","og_site_name":"eG Innovations","article_publisher":"https:\/\/www.facebook.com\/eGInnovations","article_published_time":"2018-08-20T07:11:19+00:00","article_modified_time":"2022-10-31T12:44:46+00:00","og_image":[{"url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/troubleshooting-application-deadlocks.png","type":"","width":"","height":""}],"author":"Arun Aravamudhan","twitter_card":"summary_large_image","twitter_title":"Troubleshooting Java Application Deadlocks and Application Hangs | eG Innovations","twitter_description":"Read this blog to understand how to troubleshoot Java deadlocks and resulting application hang issues. Improve development efficiency and application performance.","twitter_image":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/java-application-deadlocks.png","twitter_creator":"@https:\/\/x.com\/perfclarity","twitter_site":"@eginnovations","twitter_misc":{"Written by":"Arun Aravamudhan","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#article","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/"},"author":{"name":"Arun Aravamudhan","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/d788cb81df96a940429c3f5a3b294a6a"},"headline":"Troubleshooting Java Application Deadlocks \u2013 Diagnosing \u2018Application Hang\u2019 Situations","datePublished":"2018-08-20T07:11:19+00:00","dateModified":"2022-10-31T12:44:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/"},"wordCount":1232,"commentCount":0,"publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/monitoring-jvm-threads.png","keywords":["application hang","Java APM","Java application deadlocks","java application stalled","java application unresponsive","java blocked threads","java deadlock thread","Java deadlocks","Java Monitoring","Java performance","Java troubleshooting","JVM Monitoring","JVM Performance","JVM Tuning","what is a deadlock in java"],"articleSection":["Java Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/","url":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/","name":"Diagnose Java Application Hangs - Detect and Fix Deadlocks","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#primaryimage"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/monitoring-jvm-threads.png","datePublished":"2018-08-20T07:11:19+00:00","dateModified":"2022-10-31T12:44:46+00:00","description":"Java application deadlocks cause poor user experience. See how to diagnose & correct common Java deadlock problems.","breadcrumb":{"@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#primaryimage","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/monitoring-jvm-threads.png","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/08\/monitoring-jvm-threads.png","width":300,"height":200,"caption":"Java Application Deadlocks \u2013 Diagnosing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.eginnovations.com\/blog\/troubleshooting-java-application-deadlocks-diagnosing-application-hang-situations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.eginnovations.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Troubleshooting Java Application Deadlocks \u2013 Diagnosing \u2018Application Hang\u2019 Situations"}]},{"@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\/d788cb81df96a940429c3f5a3b294a6a","name":"Arun Aravamudhan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7ff42334d908fb4060880a4487331e4a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7ff42334d908fb4060880a4487331e4a?s=96&d=mm&r=g","caption":"Arun Aravamudhan"},"sameAs":["https:\/\/www.linkedin.com\/in\/arun-aravamudhan\/","https:\/\/x.com\/https:\/\/x.com\/perfclarity"],"url":"https:\/\/www.eginnovations.com\/blog\/author\/arun-aravamudhan\/"}]}},"modified_by":"Review eG","_links":{"self":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/7165","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/comments?post=7165"}],"version-history":[{"count":0,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/7165\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media\/7167"}],"wp:attachment":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media?parent=7165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/categories?post=7165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/tags?post=7165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}