【问题标题】:How to Find memory leaks from native ndk 'C' code in android (latest way)如何在 android 中从本机 ndk 'C' 代码中查找内存泄漏(最新方法)
【发布时间】:2018-01-24 08:25:53
【问题描述】:

在android studio中找到ndk C代码中的内存泄漏的方法是什么?由于 google 和 stackoverflow 上的每个人都在 ndk C 代码中引用 ddms 以查找内存泄漏,但 ddms 在 android sdk 中不再存在,如以下链接中所述 How to Find memory leaks from native code in android

它也无济于事,因为没有办法运行 ddms。

【问题讨论】:

  • 我想在ndk c代码中查找内存泄漏
  • 我认为您需要查看 AddressSanitizer 和 Valgrind 工具,以从 android 中的本机 ndk C 代码中获取内存泄漏。我在这里遇到同样的问题。我能够使用 valgrind 运行我的应用程序,但它会降低应用程序的速度。我目前正在查看地址消毒剂。如果您已经有了解决方案,请告诉我。

标签: android memory-management android-ndk java-native-interface


【解决方案1】:

使用LeakCanary

如何在代码中实现的描述在入门中有很好的描述

【讨论】:

  • 这个库会告诉 c 代码中的内存泄漏
  • 这个库没有告诉 ndk 中的内存泄漏
  • 您在编辑帖子之前没有提及“Native NDK C code”。这令人困惑。在投反对票之前,请先了解自己的价值。
  • 我在 android 中提到了本机代码,并添加了标签 jni 和 android ndk,还提到了一个关于 ndk 的问题
  • 现在我无法恢复投票
【解决方案2】:

设置LeakCanary

通过自述文件中的说明进行设置。

在你的 build.gradle 中:

依赖项 { 调试编译 'com.squareup.leakcanary:leakcanary-android:1.5.2' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.2' }

并在Application类中初始化

LeakCanary.install(this);

【讨论】:

  • 这个库会告诉 c 代码中的内存泄漏吗?
  • 你的意思是 ndk?... 这个库是为应用程序配置的。因此,只要应用程序内发生泄漏,就会显示出来
  • 是的 ndk,我想检测 C 代码中的内存泄漏
  • 你应该可以参考这个 Medium Post :- medium.com/square-corner-blog/…
  • 该库文档中没有描述它将捕获本机 ndk 内存泄漏
猜你喜欢
  • 2011-07-02
  • 2017-10-11
  • 2010-12-26
  • 2011-08-21
  • 2011-08-27
  • 1970-01-01
  • 2016-12-10
  • 2011-10-08
  • 1970-01-01
相关资源
最近更新 更多