在我的应用程序中,我可以选择捕获hprof转储。一世
用过的

android.os.Debug.dumpHprofData(字符串fileName)

最初我虽然通过上述方法生成的hprof数据用于
整个设备,事实并非如此。生成的hprof数据仅
为我的过程。

现在,我也在尝试为其他进程生成hprof数据。一世
需要为所有正在运行的进程获取Hprof转储
应用程序代码。

从adb shell我尝试了“ kill -10”,此命令将生成
data / misc文件夹中对应进程的hprof文件。

现在的问题是,该命令在adb中运行正常
shell提示,但是我无法将命令嵌入到mycode中。

我的代码就像

Runtime.getRuntime()。exec(“ chmod 777 / data / misc”)
Runtime.getRunTime()。exec(“ kill -10”)

没有引发异常,但不知何故它不起作用。相同
当我给我的代码时,上面的代码正在捕获我的进程的Hprof转储
进程ID。

我尝试使用“ android.os.Process.sendSignal(int pid,
android.os.Process.SIGNAL_USR1);“也。同样的问题。
为我的过程捕获Hprof转储。对于其他过程,则不是
工作。

我们是否需要获得任何特殊许可才能杀死其他进程?
我们的过程?还是一个固有的问题?你能建议一些吗
从应用程序获取其他进程的Hprof转储的可能方法
码?

谢谢

最佳答案

我们需要任何特别的东西吗
  允许杀死其他进程
  我们的过程?


是的,就像其他任何Linux系统一样。


  你能建议一些可能吗
  Hprof转储其他方式
  应用程序代码处理?


根电话。

您可以尝试使用ActivityManager及其killBackgroundProcesses()方法,但是我不知道这是否生成您想要的文件。如果是这样,则表示存在安全漏洞,需要修复。

关于java - 从应用程序代码获取其他进程的Hprof转储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3053195/

10-10 02:18