gpt4 book ai didi

c++ - Linux:为什么smaps中的值不断增加?

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:11 24 4
gpt4 key购买 nike

我总结了当前进程的映射值。重复这一过程一段时间。将结果保存在文件中,然后绘制它。我发现有点奇怪的是,smap 不同字段的值似乎或多或少呈线性增加。我还使用 c++ 中的新命令分配了一些内存。我释放了内存,但没有明显的区别。我接受了田地里的一些上下运动。不幸的是,没有任何上下运动。

这种行为正常还是我做错了什么?但我很确定我的解析器可以工作,因为我用 pmap 检查了它。我的解析器和 pmap 对于同一进程返回相同的结果。

最佳答案

从操作系统分配内存非常昂贵,因此一次会分配大块堆。 new 尝试在预分配的堆上查找空位置,只有当没有空位置时,它才会从操作系统分配另一个 block 。从这个预分配的堆中释放也仅针对大块完成。 (您可以查看 manual page “mallopt” 了解如何使用环境调整行为。请注意,所有分配都需要在页面中完成,每个页面通常为 4 KiB 大。)

这适用于小内存分配。大型分配(默认情况下,128 KiB 或更多,同样可以通过 mallopt 进行调整)使用匿名 mmap 完成,并在释放时释放。

关于c++ - Linux:为什么smaps中的值不断增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com