{"id":14748,"date":"2023-08-15T12:53:13","date_gmt":"2023-08-15T07:23:13","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=14748"},"modified":"2026-03-05T17:22:13","modified_gmt":"2026-03-05T11:52:13","slug":"how-to-get-java-heap-dump-from-kubernetes-container-into-a-local-machine","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/08\/15\/how-to-get-java-heap-dump-from-kubernetes-container-into-a-local-machine\/","title":{"rendered":"How to get Java heap dump from Kubernetes container into a local machine?"},"content":{"rendered":"\r\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\r\n\r\n\r\n<p><strong style=\"font-size: 28px;\">What is A Java heap dump?<\/strong><\/p>\r\n<p>Imagine you are running multiple Java applications within containers in a <strong>Kubernetes environment<\/strong>. Each container manages its own memory, but when something seems to be wrong, a Java heap dump becomes a useful tool for diagnosing the problem.This can help detect problems such as memory leaks or abnormally high memory consumption.<\/p>\r\n<p>Recently, one of our Java application containers in Kubernetes started running out of memory intermittently. Noticing this, our development team immediately sprung into action and analyzed the suspected memory leak in the application.<\/p>\r\n<p>The main purpose of this article is to show you how to quickly get a heap dump at these critical moments. I will walk you through the manual steps needed to reclaim JVM heap memory when you need it the most.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><strong>Let&#8217;s take a quick look at the prerequisites to accomplish this task.<\/strong><\/h2>\r\n\r\n\r\n\r\n<ol>\r\n<li>You have appropriate permission to exec into the <a href=\"https:\/\/opstree.com\/blog\/2022\/04\/19\/a-savior-imperative-in-k8s\/\">k8s<\/a> pod. It means you have to kubectl configured a respected environment.<\/li>\r\n\r\n\r\n\r\n<li>The pod should have Jmap or Jcmd installed<\/li>\r\n<\/ol>\r\n<p><strong>[ Are you looking <a href=\"https:\/\/opstree.com\/services\/devsecops-transformation-and-automation\/\">DevSecOps Managed Services<\/a>]<\/strong><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Let\u2019s do the following step to capture JVM dump and copy it into the <strong>local machine<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Step-by-Step Guide<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Step 1: Exec into the Container<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>First, you need to execute a command inside the Kubernetes pod where your Java application is running. Use the following command:<br \/><code>kubectl exec -it -n [namespace] [pod] \/bin\/bash<\/code><\/p>\r\n\r\n\r\n\r\n<p>Replace [namespace] with the appropriate namespace and [pod] with the name of the pod containing your Java application.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Step 2: Generate the Java Heap Dump<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>After moving to the container, you can generate a Java heap dump using the jmap command. This will save the heap dump to a specified file location. The structure of this command is as follows:<\/p>\r\n\r\n\r\n\r\n<p><code>jmap -dump:[live],format=b,file=[file_path] [PID]<\/code><br \/><br \/><strong>[live]: <\/strong>This option indicates that the heap dump will be captured from a live running JVM.<br \/><strong>format=b:<\/strong> Specifies the format of the dump file, which is binary.<br \/><strong>file=[file_path]:<\/strong> The path where the heap dump file will be saved inside the container.<br \/><strong>[PID]: <\/strong>The Process ID of the Java application. This PID can be found in the Kubernetes pod where the application is running.<\/p>\r\n\r\n\r\n\r\n<p><strong>Example:<\/strong><br \/><code>jmap -dump:[live],format=b,file=\/home\/nonrootuser\/dump.bin 001<\/code><\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Step 3: Copy the Dump File to Local Machine<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>After creating the heap dump, the next step is to transfer it from the Kubernetes pod to your local machine for in-depth analysis. You can get it using the following kubectl cp command:<\/p>\r\n\r\n\r\n\r\n<p><code>kubectl cp -n [namespace] [pod]:[absolute path +dump] [destination path]<\/code><br \/><br \/><strong>[namespace]: <\/strong>Replace with the appropriate namespace.<br \/><strong>[pod]: <\/strong>The name of the pod where the Java application is running.<br \/><strong>[source_file_path]: <\/strong>The absolute path to the heap dump file inside the pod.<br \/><strong>[destination_file_path]:<\/strong> The local path on your machine where the heap dump file will be copied.<\/p>\r\n\r\n\r\n\r\n<p><strong>Example:<\/strong><br \/><code>kubectl cp -n dump-dev dump-dev-59b8549f54-jzltb:\/home\/nonrootuser\/dump.bin dump.bin<\/code><\/p>\r\n\r\n\r\n\r\n<p>Even in a sophisticated Kubernetes container environment, using Java heap dumps can be a powerful strategy for troubleshooting memory issues and ensuring that your Java applications work seamlessly.In short, Java heap dumps are an essential tool for identifying and resolving memory-related challenges in Java applications. As a trusted <a href=\"https:\/\/opstree.com\/\"><strong>DevOps service provider<\/strong><\/a>, we help enterprises implement such best practices to achieve greater reliability and performance in their cloud-native ecosystem.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"bd-conclusion\" data-=\"\" data-id=\"conclusion\">Conclusion<\/h2>\r\n\r\n\r\n\r\n<p>Thanks for keeping up with me till the end of the blog. If you liked the blog please share it amongst your community and do share your views. If you have any questions, let us know through comments ! As a trusted provider of <a href=\"https:\/\/opstree.com\/services\/cloud-engineering-modernisation-migrations\/\"><strong>cloud engineering services<\/strong><\/a>, we help organizations simplify Kubernetes adoption, optimize containerized workloads, and build flexible, <a href=\"https:\/\/opstree.com\/aws-partner\/\"><strong>scalable cloud-native platforms<\/strong><\/a>.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":237553284,"featured_media":29551,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[768739308,676319247,1017,768739309,343865,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2023\/08\/Java-heap-dump.jpg","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3PS","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14748"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/237553284"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=14748"}],"version-history":[{"count":31,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14748\/revisions"}],"predecessor-version":[{"id":30896,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14748\/revisions\/30896"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29551"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=14748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=14748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=14748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}