Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Очистка памяти |
Автор: _prishelec_ 13.8.2010, 15:43 |
Добрый день! Интересует такой вопрос: приложение написано на c#, и при его сворачивании (минимизирование окна) сбрасывается оперативная память. К примеру приложение занимало метров 30, после минимизации уже метров 2-4. Как можно это делать программно? Уже несколько часов юзаю System.Diagnosticsю.Process.GetCurrentProcess(), пока толкового решения не нашел? |
Автор: Voyager 13.8.2010, 17:02 | ||
|
Автор: gambit 13.8.2010, 19:11 |
Принудительно вызвать GC. Он освободит все не использованные ресурсы. Хотя MS этого не советуют, GC сам все сделает, когда он будет нужен. Кроме того, зачем? У вас на столько мало памяти, что надо контролировать приложение? |
Автор: azesmcar 13.8.2010, 19:37 | ||
![]()
если быть точнее. тогда CLR сам очистит память..опять же нет нужды вызывать самому ![]() |
Автор: ДобренькийПапаша 13.8.2010, 19:51 |
_prishelec_, Трогать сборщик мусора вообще не рекомендуется. Делать этого не надо даже тогда, когда кажется, что надо. GC трогать действительно следует в 1% случаев из тех, когда приходит такая мысль в голову. Обычно GC затрагивается программно, когда создаются одноразовые объекты (реализующие IDisposable), а по спецификации, такие объекты ещё и финализатор должны определить. Таким образом GC будет затронут программно. Какие ещё возможны случаи - даже не знаю))) |
Автор: _prishelec_ 13.8.2010, 22:31 | ||
На серваке надо запустить столько копий, сколько хватает оперативы. Писал на C# так как не было другого выхода. Делфя или сишка не предоставляла таких возможностей, чтобы написать мое ПО, вернее очень-очень геморно было бы. В ПО интегрирован мозилловский движок, а на c# был хороший компонентик. |
Автор: jonie 13.8.2010, 22:57 | ||||
зря вы кстати на это не обратили внимание... это просто сбросил ворксет в пейджфайл.. и в эксплороре будет выглядеть как будто памяти мало.. )) в общем "меньше" чем можно оно не сможет стать имхо. |
Автор: _prishelec_ 13.8.2010, 23:05 | ||||||||||||
Большое вам спасибо. Кста память идет в swap или же нет, если в среднем прога хавает под 50 метров оперативы (это со временем, минут так через 10, если не сбросить), на серваке гига 2, я думаю при вашем методе выгрузки памяти, я копий ну 40 спокой ну запущу, при ежесекундной очистке проаг весит от 2-10 метров Добавлено @ 23:13
Я этот метод как раз сейчас и заюзал и остался доволен. Всем спасибо. Репу немогу поднять никому, мало у меня еще постов ![]() |
Автор: VirusUZ 14.8.2010, 09:16 | ||
|
Автор: gambit 14.8.2010, 11:58 | ||
У меня челюсть отвисла. Почитайте про домены. |
Автор: gambit 15.8.2010, 00:28 | ||
Что для подобных работ используются потоки. Но во многих случаях, этого мало (например если требуется разделение памяти), возможно и в вашем случае тоже, тогда используют домены приложения. А запускать на каждую копию отдельный процесс - не кавайно!!! Подробнее про домены http://msdn.microsoft.com/ru-ru/library/ms173138.aspx Добавлено через 9 минут Даже лучше вот отсюда начать http://msdn.microsoft.com/ru-ru/library/2bh4z9hs.aspx кроме того, у меня в мозгу как то не очень умещаются фразы:
как вы их сворачивать то будите??? тем более И самое главное, сервер это все таки стойка, а не ящик под ногами, а нормальная стойка попахивает уже не 40 копиями, а чуть побольше. |
Автор: _prishelec_ 15.8.2010, 01:03 | ||
Ведется разработка проекта для взятия данных из биллинговых систем. У них используются высокотехнологичные фильтры, дабы отследить ботов. С потоками ен получиться, так как мозилловский движок висит в одном адресном пространстве и ипа удаление Куков и тд происходит для всех потоков, также если делать маскировку, типа менять заголовки запроса, тоже лажа – меняешь в одном потоке и меняются в остальных. Мной было перепробовано много вариантов. В свое время система работала полностью на PHP (просто система из несколько отдельных частей), использовал мной написанный класс для CURL. Кста могу поделиться: http://depositfiles.com/files/lpza7qfe2. Но нужна обработка DOM и т.д. В общем премудростей много, конечная цель: полная эмуляция браузера. Уже все решено и проект на завершающей стадии: Сворачивать уже ничего ненадо: Помог код:
Кста я погуглил и по статистике множество решений юзают: EmptyWorkingSet. Однажды каким-то макаром мне посоветовали вот http://gluescript.sourceforge.net/. Только коллеги сильно не увлекайтесь, а то мозг напрягает до ужаса. Какая-то дребидень. |
Автор: gambit 15.8.2010, 01:30 | ||||
|
Автор: _prishelec_ 15.8.2010, 02:11 | ||||
Да я с доменами не был знаком до вашего поста. Сейчас курю инфу. Пока спасибо за инфу. А дальше видно будет ![]() Мне самомоу инетресно что получиться. То есть я смогу запускуть несколько копий прог под 1 домен и тд.? |
Автор: gambit 15.8.2010, 13:45 | ||
не совсем. Процедура создания(и уничтожения) процесса в windows очень длительная операция. Что бы избежать постоянного старта процессов, например в веб-сервере(если пользователей сайта пускать под отдельными потоками, то это удар по безопасности, значит каждому нужен процесс, а это любой сервак поставит на колени), были сделаны домены. Очень грубо говоря, домен это экземпляр приложения под управлением процесса винды. Процесс может иметь любое кол-во доменов. Т.е. любой процесс, может содержать любое кол-во запущенных копий приложения. Каждый домен изолирован (в смысле памяти) от другого, так что на безопасность это мало влияет. |
Автор: _prishelec_ 15.8.2010, 16:30 |
Не хочет на доменах вообще пахаать, после создания более чем одной копиии, сразу виснет, это изза мозилловского компонента. Во засада. |
Автор: _prishelec_ 15.8.2010, 17:18 | ||||
Не домены не помогают и глючит сам компонент браузера, присоздании более одной копии, походу в компоненте глюк. Хотя я сегодня читал, что вроде мозилловский движок просто так через домен не запустишь. Добавлено через 10 минут и 6 секунд
У вас мозилла установлена? Если да то дайте путь к файлу. Я мог бы отправть прогу, чтоб вы глянули, мот у вас получиться ее запускать через домены, если конечно можно. |
Автор: gambit 15.8.2010, 17:41 |
нет, мозилы нету(( |
Автор: _prishelec_ 15.8.2010, 18:28 | ||
Вот код создания:
Ведь все верно так? |