如何查找Linux中存在的堆大小?

时间:2010-03-01 08:09:41

标签: linux heap

我在ARM Cortex-A8处理器板上运行Linux。内核的版本由(uname -a)获得:

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

调试我的一些因malloc()失败导致崩溃的应用程序(我的mallocing大小很大),并且主板有208 MB DRAM。在这个Linux /板设置上,我需要找出:

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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