2023-01-20 349
如何检测Android JNI代码中的内存泄漏?我正在使用froyo
2017更新: valgrind可用 for Android.内置的Malloc调试功能在 Android N ,对于查找内存泄漏非常有用.您可能需要_exit()应用程序才能触发转储.
当前所述的DDMS功能当前获取简短提及官方文档
有一个实验性的,不受支持的功能,您可能可以利用.
在您的DDMS配置文件(例如Linux上的~/.android/ddms.cfg)中,添加”本地= true”.这启用了本机堆选项卡.
接下来,在设备上启用本机堆分配跟踪,然后重新启动应用程序框架:
% adb shell setprop libc.debug.malloc 1
% adb shell stop
% adb shell start
(请注意,这需要root.还请注意,这仅适用于最近的版本;在较旧的版本上,您还需要用libc_debug.so手动替换libc_debug.so in设备上的/system/lib.)
)
.
您可以通过在发出简单命令(” ADB Shell LS”)时观看LogCat输出来确定是否正确配置了设备.如果您看到:
I/libc ( 4847): ls using MALLOC_DEBUG = 1 (leak checker)
然后您知道您已经启用了它.
现在您可以使用本机堆选项卡功能来获取堆内存使用的快照.
ddms将自动从…/symbols/system/lib您的Android源树中的共享库中提取符号.当然,这要求您拥有一个完整的Android源树,并且您的设备正在运行从中构建的代码.如果没有,则不能将堆栈跟踪解码为符号名称,从而降低了功能的有用性.
您需要在测试之前和之后拍摄快照.
然后按+/-按钮
然后它将显示保留的内存位置.
我也曾在JB,JB+,Kitkat和Lollipop中使用过.
它在Android中非常好的工具可以找到泄漏.
以上所述是小编给大家介绍的检测Android JNI代码中的本地内存泄漏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26122.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态