【发布时间】:2018-08-14 19:04:58
【问题描述】:
我的朋友实现了一个动态数组来学习 C。当分配的内存不足时,他将分配的空间加倍。
我们看到他的测试程序逐个字符地写入 4 GB 的随机字符(以避免内存压缩)。但是活动监视器(在 Mac 上,基于 top)显示内存使用量逐渐增加,而不是每次扩展都翻倍。
然而,在删除/压缩时,内存使用量会立即下降,就像代码释放内存一样。
top 如何跟踪分配范围内使用的“实际”内存?如果其余分配的空间无论如何都不能供其他进程使用,它为什么要这样做?
【问题讨论】:
-
我不知道,但我猜 top 只不过是检索此信息的所有系统调用之上的一个漂亮的 ncurses 包装器。您的答案可能在内核内存管理实现细节中,而不是在顶部。
-
这似乎是关于
top实用程序的问题,而不是编程问题。可能更适合 Unix/Linux 堆栈交换器。
标签: c memory-management