Мое выполнение приложения в течение нескольких часов, нет никакого увеличения никакого значения (vmsize, память) Диспетчера задач. Но после нескольких часов я выхожу из ошибок памяти.
В sysinternals я вижу, что "Виртуальный Размер" contineously увеличивается, и когда он достигает приблизительно 2 ГБ, я начинаю получать ошибки памяти.
Таким образом, какая утечка памяти - это? Как я могу продемонстрировать это с кодом? Действительно ли возможно воспроизвести то же самое с какой-либо частью кода, где ни одно из повышения стоимости памяти только кроме Виртуального Размера в sysinternsl не обрабатывает увеличение проводника?
спасибо за любые предложения
Виртуальный размер количество страниц, выделенных процессом, те страницы, которые в настоящее время не находятся в рабочем наборе (физически загружены в ОЗУ), будут в файле подкачки системы.
Обычно вы выделяете память, которая не освобождена. Это может быть сложно отследить в коде без специальных инструментов, например, Rational Purify или Boundschecker. С sysinternals вы видите, что должна быть утечка, но это ни в коем случае не скажет вам, где ...
Если ваше программное обеспечение не такое большое, вы можете попробовать выйти из «нового» и «удалить» и посмотреть, не в памяти слишком много объектов, управляя списками выделенных объектов (так сказать, создавая свой собственный отладчик памяти). В мире Windows есть несколько помощников, например, утилиты проверки памяти CRT от Microsoft . В некоторых случаях они полезны.
Судя по всему, у вас заканчивается адресное пространство. 32-разрядная Windows делит адресное пространство пополам: половину для пользовательской программы и половину для системы, поэтому каждая получает 2 гигабайта.
Наиболее частой причиной этого является фрагментация пространства памяти до такой степени, что вы не можете найти кусок, достаточно большой для выделения. К сожалению, не зная больше о том, что вы делаете, трудно предположить, почему это может происходить.
Согласно этой теме на форуме sysinternals, Virtual size соответствует адресному пространству процесса (я предполагаю, что закоммиченные и зарезервированные страницы памяти)