【问题标题】:How to find size of heap present in Linux?如何查找 Linux 中存在的堆大小?
【发布时间】:2011-01-22 04:59:54
【问题描述】:

我有一个在 ARM Cortex-A8 处理器板上运行的 Linux。通过(uname -a)获取内核的版本:

Linux 2.6.29-dirty #2 Fri Jan 29 16:54:21 IST 2010 armv7l 未知

调试我的一些应用程序由于 malloc() 失败而崩溃(我正在 malloc 的大小很大),并且电路板有 208 MB DRAM。在这个 Linux/board 设置上,我需要找出:

  1. 为此 kernet 配置分配/预留的堆大小是多少。

  2. 如何增加这个堆大小。是否需要重新构建内核/新版本的内核映像?

【问题讨论】:

    标签: linux heap-memory


    【解决方案1】:

    我不知道 ARM Linux 的细节;但是,假设您谈论的是用户空间应用程序而不是内核空间,则本质上没有“堆大小”。用户空间内存管理的“经典 unix 方式”是“扩展堆”——应用程序有一个有限大小的堆,当需要扩展它时,它会调用 brk() 函数。 我猜你在这个平台上没有交换和禁用过度使用 - 查看 /proc/meminfo(或 'top' 的输出)以查看可用内存。

    【讨论】:

      【解决方案2】:

      如果它就像在 x86 上一样 - 堆和堆栈在同一个数据段中(很可能是)并且堆向上增长 - 堆栈向下增长 - 您可以检查堆顶和堆栈顶部之间的差异 - 那应该给你分配的理论最大值。

      【讨论】:

        猜你喜欢
        • 2012-09-29
        • 2012-01-12
        • 1970-01-01
        • 2014-06-19
        • 2015-06-18
        • 2012-03-04
        • 2015-08-28
        • 2011-03-08
        • 2014-02-25
        相关资源
        最近更新 更多