【内存分析-jmap】已安装JDK,bash: jamp: command not found

【问题一】已安装JDK,可以正常执行jstat,但是执行jmap时提示:bash: jamp: command not found

解决方案:

1、echo $JAVA_HOME,查看JDK安装路径

[root@test bin]# echo $JAVA_HOME
/opt/jdk

2、cd /opt/jdk/bin,切换到bin目录

[root@test bin]# cd /opt/jdk/bin

3、./jmap -dump:file=/data/logs/jmap/auto.dump PID,dump内存分析日志

[root@test bin]# ./jmap -dump:file=/data/logs/jmap/auto.dump 13
13: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
[root@test bin]# ./jmap -F -dump:file=/data/logs/jmap/auto.dump 13
Attaching to process ID 13, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:163)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:278)
        at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
        at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
        at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:83)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.tools.jmap.JMap.runTool(JMap.java:201)
        at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$100(LinuxDebuggerLocal.java:62)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1AttachTask.doit(LinuxDebuggerLocal.java:269)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:138)

【问题二】Ubuntu 系统,执行./jmap -F -dump:file=/data/logs/jmap/auto.dump PID报错,提示:Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file

解决方案:

(1)方法一

>echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

该方法在下次重启前有效。 

(2)方法二

永久有效方法 
sudo vi /etc/sysctl.d/10-ptrace.conf 
编辑下面这行: 
kernel.yama.ptrace_scope = 1 
修改为: 
kernel.yama.ptrace_scope = 0 
重启系统,使修改生效。 
该bug详细信息请参考官方文档: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7050524

[root@test bin]# ./jmap -F -dump:file=/data/logs/auto.dump 14
Attaching to process ID 14, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
Dumping heap to /data/logs/auto.dump ...

【问题三】内存日志分析


上传文件:只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下。
下载文件:只需在shell终端仿真器中输入命令“sz 文件名”,即可利用Zmodem将文件下载到本地某目录下。

 

你可能感兴趣的:(性能,Linux,jmap,内存分析)