java.lang.outofmemoryerror
cat /proc/ meminfo 查看内存
system_server surfaceflinger servicemanager (android reboot)
Write a script to catch the following information continually:
adb root
adb shell procrank> procrank.txt
adb shell dumpsysmeminfo<pid of process> > meminfo.txt
You can refer to Android Memory Leak Analysis Guide (80-NJ221-1) and
https://developer.android.com/studio/profile/am-hprof.htmlabout how to use MATto analyze memory leak in Java code
Turn on Android's Bionic memory debugger by performing the following steps in adb shell (need a patch from QTI):
adb root
adb shell setprop libc.debug.malloc 1
adb shell setprop libc.debug.malloc.program "mediaserver"
adb shell setprop libc.debug.malloc.maxprocsize 31457280
adb shell setprop libc.debug.malloc.minalloclim 1024
adb shell kill <pid of mediaserver>
Now you can reproduce the memory leak issue, after issue reproduced, send signal 28 to the process as below to print the memory allocation information to the logcat log call stack.
adb shell kill -28 <pid of mediaserver>
Turn on Android's Bionic memory debugger by doing the below steps in adb shell (need a patch from QTI):
adb root
adb shell setprop libc.debug.malloc.program app_process
adb shell setprop libc.debug.malloc.options "\"backtrace_enable_on_signal leak_track\""
adb shell stop
adb shell start
adb shell ps | grep hellojni
adb shell kill -45 5375
Now you can reproduce the memory leak issue, after issue reproduced, send
signal 28 to the process as below to print the memory allocation information to the logcat log call stack.
adb shell kill -28 5375