使用Java监控工具出现 Can't attach to the process
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                使用Java监控工具出现 Can't attach to the process
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                問題重現
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ? jinfo -flags 3032 Attaching to process ID 3032, please wait... Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process 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.JInfo.main(JInfo.java:138) 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:483) at sun.tools.jinfo.JInfo.runTool(JInfo.java:108) at sun.tools.jinfo.JInfo.main(JInfo.java:76) Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process 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) | 
解決辦法
| 1 | echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope | 
再次執行時就可以得到結果了
| 1 2 3 4 5 6 7 | ? jinfo -flags 3032 Attaching to process ID 3032, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.5-b02 Non-default VM flags: -XX:InitialHeapSize=41943040 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178782208 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=1572864 -XX:OldSize=40370176 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC Command line: -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms40m -Xmx512m | 
原因
這是因為新版的Linux系統加入了?ptrace-scope?機制. 這種機制為了防止用戶訪問當前正在運行的進程的內存和狀態, 而一些調試軟件本身就是利用?ptrace?來進行獲取某進程的內存狀態的(包括GDB),所以在新版本的Linux系統, 默認情況下不允許再訪問了. 可以臨時開啟. 如:
| 1 | echo 0 > /proc/sys/kernel/yama/ptrace_scope | 
永久寫到文件來持久化:
| 1 2 3 4 |  emacs /etc/sysctl.d/10-ptrace.conf  添加或修改為以下這一句:(0:允許, 1:不允許) kernel.yama.ptrace_scope = 0  ?  | 
轉載于:https://www.cnblogs.com/duanxz/p/10240899.html
總結
以上是生活随笔為你收集整理的使用Java监控工具出现 Can't attach to the process的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 求一个护肤品微商的个性签名。
 - 下一篇: 304多少钱一吨啊?