Что такое “Виртуальный Размер” в проводнике процесса sysinternals

Мое выполнение приложения в течение нескольких часов, нет никакого увеличения никакого значения (vmsize, память) Диспетчера задач. Но после нескольких часов я выхожу из ошибок памяти.

В sysinternals я вижу, что "Виртуальный Размер" contineously увеличивается, и когда он достигает приблизительно 2 ГБ, я начинаю получать ошибки памяти.

Таким образом, какая утечка памяти - это? Как я могу продемонстрировать это с кодом? Действительно ли возможно воспроизвести то же самое с какой-либо частью кода, где ни одно из повышения стоимости памяти только кроме Виртуального Размера в sysinternsl не обрабатывает увеличение проводника?

спасибо за любые предложения

14
задан James McNellis 12 June 2010 в 22:28
поделиться

3 ответа

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

Обычно вы выделяете память, которая не освобождена. Это может быть сложно отследить в коде без специальных инструментов, например, Rational Purify или Boundschecker. С sysinternals вы видите, что должна быть утечка, но это ни в коем случае не скажет вам, где ...

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

8
ответ дан 1 December 2019 в 14:10
поделиться

Судя по всему, у вас заканчивается адресное пространство. 32-разрядная Windows делит адресное пространство пополам: половину для пользовательской программы и половину для системы, поэтому каждая получает 2 гигабайта.

Наиболее частой причиной этого является фрагментация пространства памяти до такой степени, что вы не можете найти кусок, достаточно большой для выделения. К сожалению, не зная больше о том, что вы делаете, трудно предположить, почему это может происходить.

4
ответ дан 1 December 2019 в 14:10
поделиться

Согласно этой теме на форуме sysinternals, Virtual size соответствует адресному пространству процесса (я предполагаю, что закоммиченные и зарезервированные страницы памяти)

2
ответ дан 1 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: