我希望能够从命令行触发Android堆转储。有命令吗?
特别是,从命令行而不是通过Montior或DDMS GUI
也许像使用ddms或adb之类的东西,例如ddms -head-dump
or adb shell heapdump
?AFAICT监视器和ddms始终以GUI模式启动,并且adb没有堆转储命令。
更新:我尝试过,它看起来很有希望,但是不起作用:
adb jdwp
adb forward tcp:8000 jdwp:1234
(用输出1代替1234)jmap -dump:format=b,file=heapdump.hprof localhost:8000
但是,即使堆摘要失败:
jmap -heap localhost:8000
Attaching to remote server localhost:8000, please wait...
Error attaching to remote server: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
java.net.SocketTimeoutException: Read timed out
在Android 3.0以下版本中,您可以使用所谓的
kill -10 <pid>
(更多)
在Android 3.0中,添加了新的命令行工具:
adb shell am dumpheap <pid> <output-file-name>;
(更多)
要获取HPROF,您还需要使用hprof-conv更改其格式
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句