【问题标题】:Windows: track memory usage and limit threadsWindows:跟踪内存使用情况并限制线程
【发布时间】:2013-06-14 11:12:49
【问题描述】:

我正在编写一个基于 Windows 的应用程序,它使用 OpenCV 库进行图像处理。这是一个多线程应用程序,每个线程加载一个图像并对其进行处理。我的问题是,当图像很大时,内存消耗会变得非常高,应用程序会崩溃。

我希望能够跟踪我的应用程序正在使用的内存量(从应用程序内部)并动态限制正在创建的线程数。 Windows 中有没有办法跟踪应用程序使用了多少允许的内存(以及我将被允许使用多少)。

我正在使用 VC++(Windows 7 上的 VS2010)。

我确实查看了一些问题,例如 thisthis,但找不到任何允许从应用程序本身进行跟踪的问题。这可能吗?任何指南都会有所帮助。

【问题讨论】:

  • 一种方法是通过在主线程中保持一个内存池来集中内存分配,并让工作线程等待(如果需要)直到内存可用。
  • 这听起来是个不错的方法。我会查一下这个。

标签: windows visual-studio-2010 visual-c++ memory-management


【解决方案1】:

不知道这是否会对内存消耗产生任何严重影响,但如果你还没有做过,值得检查一下。

创建线程时,如果不指定堆栈大小,系统将使用与主线程相同的数量。这可能是 1MB。你可能不需要大堆栈,所以尝试传递 32k、64k、128k...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2013-01-14
    • 2011-01-18
    • 2012-11-09
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多