我已经看到很多关于malloc内存消耗的问题,但没有关于我正在处理的问题。
我致力于高内存消耗过程,这也需要良好的性能。 代码在C中。 我的目的是允许这个进程使用多达70%的机器内存作为不可分页的内存(用于性能),以及任何高于可分页内存的内容,这样操作系统仍然会有一些内存可以“播放”。 / p>
因为我在运行时需要它,所以任何性能分析程序(valgrind或类似程序)都不相关。
问题是我只能跟踪我请求的内存量,但不能跟踪malloc正在使用的实际大小。因此,虽然我认为我的分配不超过700Mb,但malloc正在保存~1Gb的内存,而且因为我要求不可分页的所有内存都是不可分页的,并且进程开始死在我身上。
如果有办法知道我的进程有多少不可分页的内存malloc,那就太棒了。但在这里阅读帖子我猜它仍然不受支持。
我愿意接受任何人可以给我的任何想法或建议。
感谢。
答案 0 :(得分:1)
通常,如果您需要对内存分配进行精细控制,则应使用mmap()
明确分配,然后提供自己的malloc()
替换,其中包含您的区域。这也可以帮助您避免以下问题:如果您尝试mlock
池中的malloc()
内容,最终锁定的结果将超出您的预期,因为锁定粒度是4KB页面并且您已锁定分配将穿插一般的libc
分配。