{"id":19513965,"url":"https://github.com/easonlai/aks-java-alpine-openjdk-memory-dump","last_synced_at":"2025-11-20T09:01:49.410Z","repository":{"id":123381512,"uuid":"383697488","full_name":"easonlai/aks-java-alpine-openjdk-memory-dump","owner":"easonlai","description":"Taking Java Memory Dump from Containerized App running in AKS/K8S","archived":false,"fork":false,"pushed_at":"2021-07-07T06:34:40.000Z","size":1,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-08T12:14:10.544Z","etag":null,"topics":["aks","aks-kubernetes-cluster","alpine","alpine-image","alpine-linux","azure-kubernetes-service","diagnostics","docker","docker-alpine","java","java-spring-boot","javaspringboot","jcmd","jmap","kubectl","kubernetes","kubernetes-cluster","memory-dump","tini"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easonlai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-07T06:31:37.000Z","updated_at":"2021-07-07T06:37:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"45294f86-9d0e-4d00-900d-8eca5f04cb42","html_url":"https://github.com/easonlai/aks-java-alpine-openjdk-memory-dump","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easonlai%2Faks-java-alpine-openjdk-memory-dump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easonlai%2Faks-java-alpine-openjdk-memory-dump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easonlai%2Faks-java-alpine-openjdk-memory-dump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easonlai%2Faks-java-alpine-openjdk-memory-dump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easonlai","download_url":"https://codeload.github.com/easonlai/aks-java-alpine-openjdk-memory-dump/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240762517,"owners_count":19853497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","aks-kubernetes-cluster","alpine","alpine-image","alpine-linux","azure-kubernetes-service","diagnostics","docker","docker-alpine","java","java-spring-boot","javaspringboot","jcmd","jmap","kubectl","kubernetes","kubernetes-cluster","memory-dump","tini"],"created_at":"2024-11-10T23:34:04.714Z","updated_at":"2025-11-20T09:01:49.306Z","avatar_url":"https://github.com/easonlai.png","language":"Dockerfile","readme":"# Taking Java Memory Dump from Containerized App running in AKS/K8S\n\nSpecial tricks to take Java memory dump from [Alpine](https://hub.docker.com/_/alpine) (e.g. [OpenJDK-Alpine](https://hub.docker.com/_/openjdk)) based container which running in [Azure Kubernetes Service (AKS)](https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes). By adding [Tini](https://github.com/krallin/tini) as init of container, otherwise Java process in Alpine would be using PID 1 and would make \"Unable to get pid of LinuxThreads manager thread\" error when taking Java memory dump (same to [jcmd](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html), [jstack](https://docs.oracle.com/en/java/javase/13/docs/specs/man/jstack.html)).\n\n* Dockerfile \u003c-- Sample Dockerfile with Tini, it's using [openjdk:8-jdk-alpine](https://hub.docker.com/layers/openjdk/library/openjdk/8-jdk-alpine/images/sha256-210ecd2595991799526a62a7099718b149e3bbefdb49764cc2a450048e0dd4c0?context=explore).\n* [Containerized App sample in Java Springboot](https://github.com/easonlai/serving-web-content-demo)\n\nGet list of POD running in AKS.\n```shell\nkubectl get pod\n```\n\nRun interactive terminal from container POD.\n```shell\nkubectl exec -it your-java-app-pod-name /bin/sh\n```\n\nCheck Process ID (PID) running Java.\nPID not equal to 1 should be our target to take memory dump.\n```shell\ntop\n```\n\nStart to take memory dump.\n```shell\ncd /tmp\njmap -dump:format=b,file=snapshot.jmap 1\nexit\n```\n\nCopy out memory dump from container to your development machine.\n```shell\nkubectl cp your-java-app-pod-name:tmp/snapshot.jmap snapshot.jmap -n your-pod-namespace\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasonlai%2Faks-java-alpine-openjdk-memory-dump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasonlai%2Faks-java-alpine-openjdk-memory-dump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasonlai%2Faks-java-alpine-openjdk-memory-dump/lists"}