gpt4 book ai didi

c++ - C++ 应用程序如何使用比 RSS 内存更多的堆?

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

我有一个用于涉及打开 UDP 端口的多线程应用程序的 C++ 可执行文件。

我正在使用不同的工具测量此应用程序的内存使用情况。

根据我对 Linux 内存使用的理解,RSS = Heap + Stack + Shared + CodeSize

但是,现在我认为等式是错误的,因为我的应用程序有:

  • 峰值堆使用量:40Mb
  • 峰值 RSS:30Mb

我用不同的工具(valgrindheaptracktop..)测量了这些数字,所以我可以说它们是正确的。

这怎么可能?造成这种情况的原因和后果是什么?

谢谢

最佳答案

正如@user4581301 在评论中指出的那样,我对 RSS 的看法存在问题。

HEAP = DynamicMemoryAllocated

RSS = DynamicMemoryInitialized + Stack + Shared + CodeSize

因此,并非所有堆大小都包含在 RSS 中,而是仅包含已初始化的部分。

如果你为一个 10Mb 的数组分配空间,这就是 HEAP。如果你开始初始化它,那么初始化的部分将被算作RSS。

关于c++ - C++ 应用程序如何使用比 RSS 内存更多的堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55380944/

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