小编典典

有些分配器是懒惰的吗?

linux

我在Linux上编写了一个C程序,该程序可以分配内存,并在一个循环中运行它,而TOP没有显示任何内存消耗。

然后我对该内存做了一些操作,而TOP确实显示了内存消耗。

当我分配内存时,我真的是“获取内存”,还是有一个“惰性”内存管理,仅当使用时才给我内存?

(还有一个选项,当我使用它时,TOP只知道内存消耗,因此我不确定。)

谢谢


阅读 295

收藏
2020-06-02

共1个答案

小编典典

在Linux上,malloc使用sbrk()或mmap()请求内存-
两种方式都可以立即扩展您的地址空间,但是Linux不会分配物理内存的实际页面,直到第一次写入有问题的页面。您可以在VIRT列中看到地址空间扩展,而RES中可以看到实际的物理内存使用情况。

2020-06-02