如何在Linux中find堆的大小?

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

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

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

  1. 什么是分配/留出这个kernetconfiguration的大小。

  2. 我怎样才能增加这个堆大小。 是否需要内核重新构build/新版本的内核映像?

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

如果它像x86一样 – 堆和堆在同一个数据段(很可能是),并且堆在向上扩展 – 堆栈正在向下扩展 – 你可以检查堆顶和堆栈顶之间的区别 – 这应该给你理论最大限度地分配。