Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > .NET FAQ > Рациональное использование памяти |
Автор: StavR 26.05.05, 20:51 |
Здраствуйте... Пишу на C# недавно, тут случайно заметил что прога моя жрет 40Мб памяти...Причем при открытии закрытии отчетов, размер занимаемой памяти увеличивается... В проге использую Crystal Report'ы и кучу sqlDataAdapter, sqlConnection, DataSet'ов. Столько и должно памяти расходоваться? Заметил что даже формочка с кнопкой около 8Мб занимает... |
Автор: andrey 26.05.05, 21:23 |
Это нормально. Поищи по форуму - много подобных тем было, почитай MSDN про принципы работы GC в .NET. В общем случае схема такова, пока памяти остаются достатоно, GC не будет собирать мусор, т.е. прога займёт всю доступную память (если сможет). Практически все проги останавливаются на 80-150M. Не парься по этому поводу. Я очень тяжелое .NET приложение запускал на P166 с 32M RAM - и ничего, работала нормально, занимала "всего" 34M. |
Автор: GazOn 26.05.05, 23:10 |
andrey прав, в большинстве случаев не надо париться по этому поводу. У каждого процесса есть рабочее множество, оно "резервирует" для процесса определенное кол-во памяти, которое может использовать только этот процесс, но это не значит, что вся зарезервированная память этим процессом используется. Если какому то приложению будет не хватать памяти, то ОС ограничит у вашего приложения ту зарезервированную память, которая свободна, поэтому вам беспокоиться не надо. Реально приложение занимает меньше памяти. Кстати, рабочее множество автоматически сводится к минимуму при сворачивании формы. Или рабочее множество можно минимизировать при помомощи API ф-ии <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SetProcessWorkingSetSize(hProcee, -1, -1); Но при этом, когда приложению потребуется больше памяти, и рабочее множество установлено в минимум, то приложению придется его увеличивать, а увеличение рабочего множества – довольно длительная операция, поэтому в большинстве случаев целесообразно оставлять его с запасом. подробнее можно почитать, например, здесь: http://www.gotdotnet.ru/Forums/Common/114669.aspx Добавлено надо будет добавить это в FAQ. |
Автор: StavR 27.05.05, 19:05 |
Спасибо... разобрался. |