0

Я пишу приложение на базе Windows, которое использует библиотеку OpenCV для обработки изображений. Это многопоточное приложение, и каждый поток загружает изображение и обрабатывает его. Моя проблема в том, что когда изображения огромны, потребление памяти становится очень высоким, и приложение падает.Windows: использование памяти треков и ограничение потоков

Я хочу отслеживать объем памяти, которую использует мое приложение (из приложения), и динамически ограничивать количество создаваемых потоков. Есть ли способ в Windows отслеживать, сколько разрешенной памяти используется приложением (и насколько больше я буду допущен).

Я использую VC++ (VS2010 для Windows 7).

Я рассмотрел некоторые вопросы, такие как this и this, но не смог найти ни одного, который позволяет отслеживать из самого приложения. Это возможно? Любые рекомендации будут полезны.

+1

Одним из способов было бы централизовать выделение памяти, удерживая пул памяти в основном потоке и заставляя рабочие потоки ждать (если необходимо), пока память не станет бесплатной. –

+0

Это звучит как хороший способ сделать это. Я посмотрю. – go4sri

ответ

0

Не знаю, окажет ли это какое-либо серьезное влияние на потребление памяти, но стоит проверить, если вы еще этого не сделали.

При создании потока, если вы не укажете размер стека, система будет использовать ту же сумму, что и для основного потока. Это может быть 1 МБ. Вам, вероятно, не нужен большой стек, поэтому попробуйте передать 32k, 64k, 128k ...

Смежные вопросы