В моем текстовом редакторе есть утечка памяти? Почему он потребляет в 3 раза больше памяти, чем Блокнот - PullRequest
1 голос
/ 16 декабря 2011

Я пишу приложение для текстового редактора. В качестве эксперимента я запустил приложение и отслеживал его использование памяти в диспетчере задач, выполняя различные действия.

  • Когда я впервые запустил приложение, оно использовало 3000 кБ.

  • Когда я набрал

  • Когда я нажал на «Сохранить», он выстрелил до 9000kb

  • и затем он просто остался на уровне 8500 КБ (он не вернулся к 3000 КБ)

Это вызвано утечкой памяти? Я немного сбит с толку, потому что наблюдал подобное поведение с Блокнотом.

  • Запуск: 1500 КБ
  • Экономия: 6000 кб
  • После сохранения объем памяти остается на уровне около 5000 КБ

Кроме того, почему мое приложение занимает в 3 раза больше памяти, чем Notepad.exe, что это может вызвать? Должен ли я волноваться?

Ответы [ 4 ]

1 голос
/ 16 декабря 2011

Для начала вы хотите знать, где эта память фактически используется.Существует много сложных программ для анализа / профилирования памяти, но если вам нужно что-то более подробное, чем диспетчер задач, но при этом достаточно простое и бесплатное, Sysinternals vmmap отлично подходит.

http://technet.microsoft.com/en-us/sysinternals/dd535533

Как уже упоминалось, сохранение, вероятно, приводит к извлечению других библиотек. Сам текст также будет способствовать использованию вашей памяти.VMMap поможет вам определить, сколько у вас и сколько другого.Тогда вы сможете увидеть, действительно ли ваша часть существенно растет со временем или нет.Вы, вероятно, хотите, чтобы в течение длительного времени проводилось стресс-тестирование, чтобы убедиться в том, что происходит утечка памяти, если вы не собираетесь использовать профилировщик памяти, в противном случае утечка может оказаться недостаточно большой, чтобы ее можно было легко заметить.

1 голос
/ 16 декабря 2011

Тот факт, что вы используете Qt, означает, что в ваше программное обеспечение добавлено много ненужного кода.Например, размер Qt Core составляет более 2 МБ, а Qt Gui - около 8 МБ.Microsoft, с другой стороны, вероятно, кодировали Notepad, используя чистый C / C ++ и Windows API, что означает, что они имеют меньший и более быстрый исполняемый файл.

Наконец, это также зависит от вашего компилятора.MinGW собирается создавать более длинные и медленные исполняемые файлы, чем компилятор Visual C ++.Поэтому, если можете, попробуйте использовать компилятор Microsoft.

1 голос
/ 16 декабря 2011

Диалог File-Save, запускаемый впервые, вероятно, сжигает много памяти. Например, при открытии диалогового окна файла в окно встраивается копия Проводника, а при загрузке Проводника в ваш процесс уходит много багажа.

0 голосов
/ 22 января 2013

Я попробовал точно так же в блокноте, для сохранения требуется больше памяти.Если вы откроете текущий файл и сохраните его, то разницы в памяти нет.Создание файла занимает тонны памяти, в конце концов.

...