【问题标题】:VS2005: Limit the Heap sizeVS2005:限制堆大小
【发布时间】:2010-09-11 00:25:08
【问题描述】:

VS2005 C++ 编译器标志是否类似于 Xmx???M java 标志,因此我可以限制在 Windows 上运行的应用程序的堆大小。

我需要限制堆大小,以便填充内存以找出当前的空闲内存。 (代码也运行在嵌入式系统上,这是获取内存使用的最佳方法)

【问题讨论】:

  • 嗯 - 很难回答。您使用什么语言? C、C++?
  • 对不起,我说的是gcc,但实际上我在VS2005中使用的是c++

标签: memory visual-c++ heap-memory


【解决方案1】:

您可以通过以下方式设置程序的堆大小:

Linker -> System -> Heap Reserve Size

也可以在编译器命令行使用/HEAP:reserve进行设置

【讨论】:

    【解决方案2】:

    堆大小取决于使用的分配器。可能还有一些 Windows API 调用限制了进程可以分配的内存量,但我不知道有一个,我现在不想寻找它,抱歉。但一般来说,如果您编写自己的分配器(可能只是环绕编译器提供的 malloc()new 运算符),您可以通过这种方式人为地限制堆大小。

    或者,如果您有自己的分配器,即使只是一个包装器,您也可以跟踪总共分配了多少内存。如果你知道可用的数量,你可以做一些减法并得到总数。然后你也许还能得到碎片统计信息,比如最大的空闲块。

    【讨论】:

    • 替换分配器以限制堆或跟踪内存使用情况的问题是,只有在您可以实际进行替换的情况下才有效......不能真正限制堆或跟踪第 3 方的分配库和操作系统模块
    【解决方案3】:

    您可能想查看 gflags 实用程序(在 Windows 调试工具中)是否可以执行此操作。它可以利用大量原生应用程序做很多其他有趣的事情。

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2011-01-19
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多