问题描述
请提供一个简单的逐步指南,以从Kubernetes容器中查看Java堆转储。
解决方法
- 登录到K8S并执行到运行Java应用程序的Pod。
kubectl exec -it herle-deployment-pod-5757d89d85-wrpc9 bash
-
获取进程ID(顶部命令)
-
创建Java堆转储
jmap -dump:live,format=b,file=<file_name>.bin <process_id>
示例:
jmap -dump:live,file=application_heap_dump.bin 1
- 将堆转储从pod复制到本地计算机。
kubectl cp <pod_name>:<heap_file> <your local destination directory>
示例:
kubectl cp herle-deployment-pod-5757d89d85-wrpc9:/tmp/application_heap_dump.bin /Users/amritharajherle/Desktop/application_heap_dump.bin
- 使用任何内存泄漏分析工具。我正在使用Eclipse的 Memory Analyzer 插件。
- 打开堆转储文件
- 选择泄漏可疑报告
- 您可以检查对象数和保留的堆空间。还有一些可能的泄漏嫌疑人。