Страница: 1 |
У меня в программе создаеться несколько экземпляров класса, все их я сохраняю в ArrayList! В оперативке это занимает ну пусть 50 метров, после того как я каждому экземпляру класса присваиваю Nothing и делаю MyArrayList.Clear ничего не происходит и по прежнему прога жрет 50 метров. Как очистить память. И еще тоже самое для обычных массивов. Присваивание массиву значения Nothing ничего не дает?? Почему?
Не дает, потому что это винда выделила твоему процессу столько памяти и отдаст его когда ей этого захочется Правда ее об этом можно попросить: Private SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess.Handle(), -1, -1) Collect-то мусор соберет, только винда вовсе не впешит возвращать зарезервированную под процесс память. Поэтому SetProcessWorkingSetSize рулит. З.Ы. System.Environment.WorkingSet - вернет размер зарезервированной памяти, но не устновит. Страница: 1 |
Вопрос: Как очистить память???
Добавлено: 22.05.04 11:38
Автор вопроса: sania-tngf
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 22.05.04 11:58
Можно попробовать Erase все массивы... Или использовать/создавать массивы в памяти с помощью GlobalAlloc... и подобных ей API функций
Номер ответа: 2
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #2
Добавлено: 24.05.04 13:05
Номер ответа: 3
Автор ответа:
Maxik
Вопросов: 58
Ответов: 201
Профиль | | #3
Добавлено: 24.05.04 15:26
SetProcessWorkingSetSize
Кажется, это можно сделать и средствами Нет. System.environment.
Номер ответа: 4
Автор ответа:
Maxik
Вопросов: 58
Ответов: 201
Профиль | | #4
Добавлено: 24.05.04 15:34
Если создать массив в unmanaged, то в managed можно получить только
первый элемент этого массива т. к. невозможно определить его размер.
Номер ответа: 5
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #5
Добавлено: 24.05.04 17:29
Нужн опросто вызвать мусорщика (GC.Collect), предварительно прибив все
ссылки на твой большой объект (присовив переменным Nothing). Тогда аппетиты
поумерятся.
Номер ответа: 6
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #6
Добавлено: 25.05.04 09:20
Номер ответа: 7
Автор ответа:
Maxik
Вопросов: 58
Ответов: 201
Профиль | | #7
Добавлено: 25.05.04 12:31
Process.MaxWorkingSet
Process.MinWorkingSet
Номер ответа: 8
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #8
Добавлено: 26.05.04 10:59
Опа, не знал. Но это, конечно, хорошо, только SetProcessWorkingSetSize с параметрами -1 и -1 отберет у процесса лишнюю память, а как так сделать в .Net?
Номер ответа: 9
Автор ответа:
Maxik
Вопросов: 58
Ответов: 201
Профиль | | #9
Добавлено: 26.05.04 16:49
Так же попробуй.
Номер ответа: 10
Автор ответа:
nap
ICQ: 121772779
Вопросов: 0
Ответов: 42
Профиль | | #10
Добавлено: 09.06.04 12:14
GC.Collect(GC.MaxGeneration);