2013-04-04 45 views
1

我试图与下面的代码Java内存转储问题

**/usr/lib/jvm/j2sdk1.5-sun/bin/jmap -heap 10699** 

使用,以创建内存转储,但我得到以下提到的错误,任何人都可以帮助我

附加到进程ID 10699,请稍候... 错误连接到过程:sun.jvm.hotspot.debugger.DebuggerException:无法连接到进程

我使用Java 5

+0

你在使用什么操作系统? – KevinDTimm 2013-04-04 12:25:16

回答

3

为了积极主动,我假设你正在运行ubuntu。在这种情况下,键入以下内容:

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

如果你不运行Ubuntu,我会建议您运行JMAP为相同的用户跑到你的目标进程

+0

可能值得链接到[bug JDK-7050524](http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7050524),它记录了这一点。 – 2015-05-12 01:16:30

0

(假设你在Ubuntu的)

快速修复是echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

如果您希望在重新启动后能够继续存在,并且您不想损害受限制的ptrace_scope提供的保护,那么我建议在需要ptrace的二进制文件上使用setcap cap_sys_ptrace=eip。对于java开发者,你可以运行这个命令(作为root)

find /usr/lib/jvm -type f -perm -o+x -exec setcap cap_sys_ptrace=eip {} \;