2010-03-01 58 views
2

我有一個運行在ARM Cortex-A8處理器板上的Linux。內核的版本是由信息(uname -a)獲得:如何在Linux中查找堆的大小?

的Linux 2.6.29-髒#2週五01月29日16時54分21秒北京時間2010 armv7l未知

要調試我的一些應用程序出故障由於malloc()失敗(我的mallocing的大小很大),並且電路板有208 MB DRAM。在此Linux /主板設置上,我需要找出:

  1. 什麼是爲此kernet配置分配/留出的堆大小。

  2. 如何增加堆大小。它需要內核重新構建/新版本的內核映像嗎?

回答

2

我不知道ARM Linux的細節;然而,假設您正在討論的是用戶空間應用程序而不是內核空間,那麼本質上沒有「堆大小」。用戶空間內存管理的'經典unix方式'是'擴展堆' - 應用程序有一個有限大小的堆,當它需要擴展它時,它調用brk()函數。 我想你在這個平臺上沒有交換和禁用過度使用 - 查看/ proc/meminfo(或輸出'top')查看可用內存。

0

如果它就像x86一樣 - 堆和堆棧在同一個數據段中(很可能是),並且堆向上增長 - 堆棧正在向下擴展 - 您可以檢查堆頂部和堆棧頂部之間的區別 - 應該給你理論上的最大分配。