我正在编写一个基于Windows的应用程序,它使用OpenCV库进行图像处理。这是一个多线程应用程序,每个线程加载一个图像并对其进行处理。我的问题是,当图像很大时,内存消耗会变得非常高,应用程序崩溃。
我希望能够跟踪应用程序正在使用的内存量(来自应用程序内部)并动态限制正在创建的线程数。在Windows中是否有办法跟踪应用程序使用的允许内存量(以及我将允许多少内容)。
我正在使用VC ++(Windows 7上的VS2010)。
我确实查看了一些问题,例如this和this,但找不到任何允许在应用内部进行跟踪的问题。这可能吗?任何指导方针都会有所帮助。
答案 0 :(得分:0)
不知道这是否会对内存消耗产生严重影响,但如果你还没有这样做,那就值得检查一下。
创建线程时,如果未指定堆栈大小,系统将使用与主线程相同的数量。这可能是1MB。你可能不需要大堆,所以尝试传递32k,64k,128k ......