我希望能够通过命令行触发Android堆转储。是否有相应的命令?具体而言,我需要从命令行触发,而不是通过Montior或DDMS GUIs。也许可以使用ddms或adb,例如:ddms -head-dump或adb shell heapdump?据我所知,Monitor和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
jdb -attach localhost:8000
连接到转发的 JDWP 端口。 - nmr