【发布时间】:2026-02-11 17:40:02
【问题描述】:
我使用的是 RHEL 6.3(64 位)。 我对我的多线程 c/c++ 程序进行了一些更改(使用 std:map 来满足特定要求),现在我的项目的初始虚拟内存使用量非常高(大约 900m)。我所做的所有更改都在一个 MACRO 下进行保护。
但是在禁用 MACRO 之后,我也看不到我的进程的虚拟内存使用量有任何减少。
所以我有几个问题要问。
有什么方法可以找出哪个线程消耗了最大的虚拟内存,以便我可以隔离问题?
为什么禁用宏后我的进程的虚拟内存使用量没有下降?
-
32 位 (RHEL-6.3) 上的相同项目占用的虚拟内存非常少(大约 150m)。 几乎比 64 位操作系统少 6 倍。为什么?
我使用 top 命令查看虚拟内存使用情况。
【问题讨论】:
-
为什么这是个问题? 0.9Gbytes 没那么大!内存很便宜。赢得几百兆字节值得您花几天的时间吗?
-
您是否使用了版本控制系统(git 等)?如果是这样,而不是仅仅更改宏实际上同步回旧版本并尝试它。如果你看到了你所期望的(低内存使用),那么仔细看看所有的变化。不是,开始使用一个。
标签: c++ c linux multithreading memory