Windows:跟踪内存使用情况并限制线程
我正在编写一个基于Windows的应用程序,它使用OpenCV库进行图像处理。这是一个多线程应用程序,每个线程加载一个图像并对其进行处理。我的问题是,当图像很大时,内存消耗变得非常高,应用程序崩溃 我希望能够跟踪我的应用程序正在使用的内存量(从应用程序内部),并动态限制正在创建的线程数。在Windows中是否有方法跟踪应用程序正在使用的允许内存量(以及允许的内存量) 我正在使用VC++(Windows7上的VS2010)Windows:跟踪内存使用情况并限制线程,windows,visual-studio-2010,visual-c++,memory-management,Windows,Visual Studio 2010,Visual C++,Memory Management,我正在编写一个基于Windows的应用程序,它使用OpenCV库进行图像处理。这是一个多线程应用程序,每个线程加载一个图像并对其进行处理。我的问题是,当图像很大时,内存消耗变得非常高,应用程序崩溃 我希望能够跟踪我的应用程序正在使用的内存量(从应用程序内部),并动态限制正在创建的线程数。在Windows中是否有方法跟踪应用程序正在使用的允许内存量(以及允许的内存量) 我正在使用VC++(Windows7上的VS2010) 我确实查看了一些问题,如和,但没有找到任何允许从应用程序本身进行跟踪的问题
我确实查看了一些问题,如和,但没有找到任何允许从应用程序本身进行跟踪的问题。这可能吗?任何指导原则都会有帮助。不知道这是否会对内存消耗产生严重影响,但如果您还没有这样做,则值得检查
创建线程时,如果不指定堆栈大小,系统将使用与主线程相同的数量。这可能是1MB。您可能不需要大堆栈,因此尝试传递32k、64k、128k…一种方法是通过在主线程中保留单个内存池来集中内存分配,并使工作线程等待(如果需要)直到内存空闲。这听起来是一种很好的方法。我会查这个的。