android studio dump java heap_Android Studio3.0在dump java heap时报错io.grpc.StatusRuntimeException: UNK...

前言

换了Android Studio 3.0以后,性能分析工具换成了Android Profiler,踩了些坑。

这里记录一下,使用内存分析时无法生成堆转储文件的问题以及我是如何解决的。

问题

内存分析时,点击dump java heap时,正常来说应该生成堆转储文件(xxx.hprof)到本地并自动打开展示内存数据的。

但是现在却无法正常dump heap,界面上只dump了1秒不到,没有提示生成文件,也没有自动展示什么数据。

并且可以发现Android studio右下角有报错提示。

点击右下角报错提示,内容截图如下:

e4ac189870dacb94dd968d4ab97f9aa5.png

上谷歌搜了半天 io.grpc.StatusRuntimeException: UNKNOWN,都和android没啥关系,后来看到了一个小伙伴遇到同样问题,有了启发,发现了问题所在:

21867b38d684e0e1338c2e6110f55d85.png

发现原来是当前调试手机的/data/local/tmp/perfd/cache/ 这个文件夹没有非root组的写权限,导致Android Studio的heap文件没法存储。

解决办法

既然是/data/local/tmp/perfd/cache/ 文件夹没权限,我给它写入权限就好了。

adb shell进入当前调试手机的终端,如图:

dac0f4217da1863bb09b0b74eec24fcd.png

尝试读写data文件夹时,发现当前用户是shell用户,没有读写权限。切换到root用户,执行

su

命令,变为root用户(当然,我的调试机器是小米2s 我已经root过了),如图:

66a1ea3657536fc51a2c2f02a1926872.png

好,现在变为root用户了,有权限操作了。

我们进入/data/local/tmp/perfd/,执行

cd /data/local/tmp/perfd/

过程如图:

175db4091c0e305100d0bc2ca99c82e7.png

查看cache的权限,发现是只有root用户有读写执行权限,其他组的用户没有任何权限,如图:(其实写文章时我已经给过权限了,找个之前的截图,意思一下)

cc190ef54e39eb8359f413738500dfcc.png

现在修改cache文件夹权限,让所有用户都可以读写执行。

在/data/local/tmp/perfd/下,执行

chmod 777 cache

之后再查看perfd下所有文件(夹)的权限,发现cache文件夹已经变成所有用户可读写了。

过程如图:

edafbf741ef02a1f1f431cbdfe030a31.png

好,现在我猜应该可以dump java heap了,我们回到Android Studio试一下,发现果然可以dump数据并展示了,如图:

74fb1e93f529525423d34d497791ac6a.png

问题解决了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值