我有一个运行在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 /主板设置上,我需要找出:
什么是分配/留出这个kernetconfiguration的堆大小。
我怎样才能增加这个堆大小。 是否需要内核重新构build/新版本的内核映像?
我不知道ARM Linux的细节; 但是,假设你正在讨论的是用户空间应用程序而不是内核空间,那么本质上没有“堆大小”。 用户空间内存管理的“经典unix方法”是一个“扩展堆” – 应用程序有一个有限大小的堆,当需要扩展它时,它调用brk()函数。 我猜你在这个平台上没有交换和禁用过度使用 – 查看/ proc / meminfo(或输出“top”)查看可用内存。
如果它像x86一样 – 堆和堆在同一个数据段(很可能是),并且堆在向上扩展 – 堆栈正在向下扩展 – 你可以检查堆顶和堆栈顶之间的区别 – 这应该给你理论最大限度地分配。