Управление памятью - PullRequest
       3

Управление памятью

2 голосов
/ 02 марта 2012

Привет, первый вопрос на этом сайте, молодой разработчик, работающий над проектом для Uni, и я решил создать Application Launcher в C #, для которого исполняемый файл индекса находится в каталогах, указанных пользователем!Моя проблема в том, что я использую Keyboard Hook, чтобы позволить пользователю вызывать приложение для фокусировки при необходимости, глядя на диспетчер задач, в то время как двоичный файл приложения (exe) находится в памяти, каждый раз, когда я вызываю приложение для фокусировки, используя Alt +X память в «Приватном рабочем наборе» (PWS) начинается примерно с 40 000 КБ (уже слишком большой, так что это вызывает беспокойство), но затем, когда приложение теряет фокус, и я призываю его снова сфокусироваться,Память PWS увеличится до 50 000 КБ и будет увеличиваться на 10 000 К каждый раз, когда я повторяю это ...

Я понимаю, что, вероятно, я не выбрасываю все объекты в правильное поместье, я визуально добавил адаптеры таблиц кэта форма для взаимодействия с базой данных SQL, которую я выбрал и установил в ноль (не знаю, собираюсь ли я сделать и то, и другое) и назвал сборщик мусора. В основном я хотел бы ответить, какие инструменты лучшенайти утечки памяти и как сохранить форму в памяти, но при этом потреблять наименьшее количество ресурсовТакже возможно, почему мое приложение в основном добавляет 10 000 КБ в PWS каждый раз, когда приложение фокусируется, создает ли оно каждый раз новый экземпляр формы?Я собираюсь добавить класс мьютекса, чтобы предотвратить множественные экземпляры, но решит ли это мою проблему?

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

Заранее спасибо

Обновление: Привет, ребята, на всякий случай, если кто-нибудь наткнется на эту тему и обнаружит, что это несколько актуально, я нашелчто моя проблема не требует точного решения или содержит утечку.После установки и запуска приложения я установил пиковую нагрузку на приложение и оставил Диспетчер задач открытым, чтобы контролировать его память. Оказывается, что сборщик мусора в конце концов выполняет свою работу, хотя это может занять 2/3 минуты.

Пиковая память: 200 000 КБ, что невероятно высоко для масштаба приложения, после того, как ГХ выполнил свою работу, оно упало до 3000 К ..

1 Ответ

0 голосов
/ 02 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...