Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
||||||
1 | ||||||
Уменьшение объема занимаемой оперативной памяти приложения04.09.2012, 00:01. Показов 6586. Ответов 23
Метки нет (Все метки)
Друзья,недавно столкнулся с проблемой нехватки оперативной памяти приложению(огромному) одна вкладка которого весила почти 40мб и их могло быть и 10 и 20....короче жесть,а потом на просторах интернета наткнулся на эту замечательную функцию и счастью моему нет предела!!!
Вот приведу простой пример применения этой функции:
P.S. Конечно многим я Америку не открыл,но подумал пригодится таким как я))
0
|
04.09.2012, 00:01 | |
Ответы с готовыми решениями:
23
Уменьшение объёма памяти, занимаемой приложением Сколько можно создать потоков исходя из количества процессоров и объема оперативной памяти? Ограничить количество занимаемой оперативной памяти при выполнении функции Определение объема памяти занимаемой переменной |
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
04.09.2012, 00:44 | 2 |
Меня это тоже интересует.
Я читал что это очень негативно влияет на работу clr,потому как постоянно заставляет запрашивать ресурсы при изменении стека или кучи. Рассудите а? Да вспомнил еще что 4мб это только выделяемая память,а рабочая будет как раз возле ваших 640кб
0
|
Почетный модератор
|
|
04.09.2012, 00:50 | 3 |
Да хватит Вам уже кастрировать свои же приложения, сколько можно то, а потом появляются претензии что приложение тормозит. SetProcessWorkingSetSize не уменьшает размер занимаемой приложением памяти, функция изменяет рабочий набор процесса. Сбрасывая его вы только топите своё же приложение, если системе нужна будет память, она её заберет сама.
И после вызова функции приложение будет опять резервировать память, до определенного момента. Это получается нагружение менеджера памяти бессмысленными операциями.
1
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 00:52 [ТС] | 5 |
А тогда мне что делать?прога не моя большая корпоративная,как ее запустят пользователи с ноутбуком в 1-2 гига памятью?учитывая что на них 7ка а это 30~40процентов операционнка
0
|
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
||||||
04.09.2012, 00:59 | 6 | |||||
а как насчет этих функций,они также режут или ими можно подпилить незаметно прогу?
0
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 01:02 [ТС] | 7 |
А нет альтернативных вариантов?Без всяких урезаний
0
|
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
04.09.2012, 01:04 | 8 |
Я думаю только рефакторинг и анализ кода разными профайлерами.
Но я подожду пока умные люди помогут)
0
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 01:06 [ТС] | 9 |
Я кстати слышал про это,например какой программой делать?
0
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
04.09.2012, 01:06 | 10 |
вариант "почистить говнокод" не популярен совсем смотрю )
0
|
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
04.09.2012, 01:06 | 11 |
Метод который использовали ведь начинает жрать жесткий диск,а не RAM,по-этому падает скорость?
0
|
Почетный модератор
|
|
04.09.2012, 01:07 | 12 |
Внутри происходит тот же вызов SetProcessWorkingSetSize, подробнее в рефлекторе.
Сложно говорить об оптимизации приложения не видя его и его код... Я не к тому что его следует выкладывать что бы кто-то в нём копался, а к тому что стоит поискать его уязвимые моменты самому, используя специально предназначенные для этого средства - профайлеры. И вариант думаю тоже имеет место быть. Содержимое страниц памяти может быть сброшено в файл подкачки, если они используются приложением, скорость доступа к этим участкам соответственно упадёт.
1
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 01:10 [ТС] | 13 |
Конкретнее,например какой?
Добавлено через 58 секунд там около 50 файлов в ядре и 20 сама прога и все не менее 5-6килострок,ты уверен про почистить?
0
|
Почетный модератор
|
|
04.09.2012, 01:12 | 14 |
http://stackoverflow.com/quest... -profilers
На вкус и цвет все фломастеры разные...
0
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 01:13 [ТС] | 15 |
А вообще из теории оптимизации(если есть такая) где можно прочитать про хороший качественный код?
0
|
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
04.09.2012, 01:16 | 16 |
в самой VS просмотри какая ф-я жрем много,а потом по-немного,по-немного..
(Анализ\Мастер производительности)
1
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
04.09.2012, 01:20 | 17 |
не ну а как иначе? сам то подумай...
если прога жрет явно больше чем ей положено значит надо править код какая разница сколько там килострок? это единственное решение которое реально поможет, выбора то нету т.е либо правишь код и уменьшаешь потребление памяти, либо не правишь и не уменьшаешь потребление
0
|
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
04.09.2012, 01:21 | 18 |
Вот еще инфу нашел)
Жрет из-за совместимости процессоров.Если ставить свой,например если у тебя х86 будет по-меньше. Но ведь ты пишешь не только для себя,правильно. //если инфа 100% Еще,если юзать 64бита то там 2 копию система будет резать больше нежели 32-ох. И чем больше у системы отбирают памяти тем больше она прессует приложения на .net) Я за 2 недели правил код когда-то) когда все готовое - алгоритм прорисовываешь,а потом дело времени
0
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
04.09.2012, 01:32 | 19 |
а фукнция очень даже полезная, только в роли косметики, а не решения всех проблем
мы то знаем что система сама память заберет когда понадобится, а вот юзер скорей всего дуб дубом, он видит цифру и бежит кричать про аналог который жрет вдвое меньше памяти... вот тут и можно навести иллюзию, в итоге наша совесть почти чиста и юзер спит спокойно ) конечно осторожно применять надо, например при сворачивании в трей
0
|
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
|
|
04.09.2012, 01:41 [ТС] | 20 |
Справедливости ради хочу заметить что прога не на C# Forms,а на WPF,у меня возникает мысля пустить в отдельном потоке вызов этой функции для основного потока.Вообще бред делится на 2части-выполнимый и невыполнимый,к какому относится эта мысль?
0
|
04.09.2012, 01:41 | |
04.09.2012, 01:41 | |
Помогаю со студенческими работами здесь
20
Накапливается объем занимаемой оперативной памяти Подсчитать количество оперативной памяти, занимаемой программой Постепенное увеличение занимаемой оперативной памяти и сбой программы Уменьшение используемого объёма памяти при работе с изображениями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |