На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: maxim84_
  
> Рациональное использование памяти
    Здраствуйте... Пишу на C# недавно, тут случайно заметил что прога моя жрет 40Мб памяти...Причем при открытии закрытии отчетов, размер занимаемой памяти увеличивается... В проге использую Crystal Report'ы и кучу sqlDataAdapter, sqlConnection, DataSet'ов. Столько и должно памяти расходоваться?
    Заметил что даже формочка с кнопкой около 8Мб занимает...
      Это нормально. Поищи по форуму - много подобных тем было, почитай MSDN про принципы работы GC в .NET. В общем случае схема такова, пока памяти остаются достатоно, GC не будет собирать мусор, т.е. прога займёт всю доступную память (если сможет). Практически все проги останавливаются на 80-150M. Не парься по этому поводу. Я очень тяжелое .NET приложение запускал на P166 с 32M RAM - и ничего, работала нормально, занимала "всего" 34M.
        andrey прав, в большинстве случаев не надо париться по этому поводу.

        У каждого процесса есть рабочее множество, оно "резервирует" для процесса определенное кол-во памяти, которое может использовать только этот процесс, но это не значит, что вся зарезервированная память этим процессом используется. Если какому то приложению будет не хватать памяти, то ОС ограничит у вашего приложения ту зарезервированную память, которая свободна, поэтому вам беспокоиться не надо. Реально приложение занимает меньше памяти.
        Кстати, рабочее множество автоматически сводится к минимуму при сворачивании формы.
        Или рабочее множество можно минимизировать при помомощи API ф-ии
        ExpandedWrap disabled
          SetProcessWorkingSetSize(hProcee, -1, -1);

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

        подробнее можно почитать, например, здесь:
        http://www.gotdotnet.ru/Forums/Common/114669.aspx

        Добавлено
        надо будет добавить это в FAQ.
          Спасибо... разобрался.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0352 ]   [ 16 queries used ]   [ Generated: 19.04.24, 15:15 GMT ]