jvm命令jstat正常执行,执行jmap异常 operation not permitted

今天jvm群里面一个朋友compress class space区域oom,教他使用jmap -heap 和jstat -gc命令查看进程状态的时候,发现jstat可以正常执行,但是jmap执行不了,发给我的截图如下:


经确认,执行jmap命令的用户就是启动java进程的用户,加了-F也不好使,后来发现是新版linux的ptrace-scope机制导致的。以下内容是在网上找到的:

新版的Linux系统加入了 ptrace-scope 机制. 这种机制为了防止用户访问当前正在运行的进程的内存和状态, 而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统, 默认情况下不允许再访问了, 可以临时开启:

echo 0 > /proc/sys/kernel/yama/ptrace_scope

永久更改:

vi  /etc/sysctl.d/10-ptrace.conf 

kernel.yama.ptrace_scope = 0 

据说在Ubuntu 11.04之后都会出现这种问题


那个朋友的linux版本:

Linux 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux linux

jstat统计数据不是读内存,它读取的是java的统计文件 ,这个文件存放在/tmp/hsperfdata_用户名/进程id ;

jmap读取的是内存,所以就导致了这个问题了;



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值