linux - kmemleak 和 kmemcheck 有什么区别?以及如何在 Android 操作系统上启用这些工具?

标签 linux memory-management memory-leaks linux-kernel android-kernel

彼此(kmemleak 和 kmemcheck)是否有任何特殊用途/优势?我可以在 Android 操作系统(而非 Linux 操作系统)上启用这些工具吗?请指导我如何操作。

引用:https://www.kernel.org/doc/Documentation/kmemcheck.txt https://www.kernel.org/doc/Documentation/kmemleak.txt

最佳答案

Kmemleak 和 Kmemcheck 执行不同的任务,没有一个比另一个更好。

1. Kmemleak 检查是否有一些内存块由内核分配但未被释放(即检查内核中的内存泄漏,因此得名)。性能开销通常是可以接受的。

2。 Kmemcheck 检查是否某些内核代码访问未初始化的内存。示例:内核代码分配了一个结构,没有用值填充它,然后从该结构中读取了一些东西。 Kmemcheck 应该检测到这一点。

顺便说一句,Kmemcheck 不会检查内存泄漏。

Kmemcheck 通常会使系统变慢,以至于无法使用图形环境。引导过程也可能变得非常缓慢(并且可能失败)。

3。 如果我没记错的话,Kmemleak 至少适用于 x86 和 ARM。 Kmemcheck 仅适用于 x86。

4. 不幸的是,我不能说如何在 Android 上启用 Kmemleak,我只在桌面 Linux 系统上使用它。

5. 根据您要完成的任务,可能会有更适合您需求的工具。例如,Linux 内核具有多种可以启用和内置的调试功能。同样,我在这方面没有使用 Android 内核的经验。

关于linux - kmemleak 和 kmemcheck 有什么区别?以及如何在 Android 操作系统上启用这些工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769930/

相关文章:

memory-management - 解决大型二进制文件泄漏

使用 NgRx store 进行 Angular 内存优化以避免内存泄漏

html5 canvas 应用程序中的 JavaScript base64 图像源内存管理

windows - CentOS 与 Windows Server 2008

java - 我的 Bitset 的大小是多少?

linux - 是否有工具可以检查两个 callgrind/valgrind 配置文件的差异?

c++ - 通过返回 front() 和 pops() 的函数清空 std::queue

c - 释放未分配的指针

linux - 不确定 crontab 有什么问题

linux - NGINX:允许多个端口可用于 https + 将所有 http 重定向到 https