|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУ, никогда не говори никогда ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 22:14 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
ИзопропилМСУ, никогда не говори никогда На своей памяти помню только одно применение с подзним связыванием на офисном интеропе (которому место на помойке), ну ты понял, о чем я :) Больше в жизни не встречал ситуации, когда нужно это явно делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 22:23 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУСамое ценное в статье Ковача - это заключение. https://msdn.microsoft.com/ru-ru/magazine/cc163491.aspx Заключение: В настоящей статье рассматриваются различные проблемы, которые возникают в приложениях .NET и могут стать причиной утечек памяти или чрезмерного потребления памяти. Конечно, .NET в большой мере избавляет от забот о памяти, но чтобы быть уверенными, что приложение работает правильно и эффективно, нужно внимательно следить за тем, как оно использует память. Тот факт, что приложение является управляемым, не означает, что нужно выбросить и забыть профессиональные навыки и накопленный опыт разработки и отладки программных систем, полностью положиться на сборщик мусора и ждать, что он сотворит чудеса . Разрабатывая и отлаживая приложение, нужно постоянно следить за значениями счетчиков, которые характеризуют эффективность использования памяти. Так что, a_voronin, самое время для изучения .NET :) Боюсь, что на .NET я программировал уже слишком долго с первой версии ещё. GC.Collect использовал в боевом коде, использовал не раз, знаю результат. То, что кто-то написал, что сборщик мусора не надо вызывать, это его личное мнение, которое я лично проигнорирую. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 16:05 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninБоюсь, что на .NET я программировал уже слишком долго с первой версии ещё. GC.Collect использовал в боевом коде, использовал не раз, знаю результат. То, что кто-то написал, что сборщик мусора не надо вызывать, это его личное мнение, которое я лично проигнорирую. Боюсь, что ты просто облажался и тебе откровенно стыдно это признать. Остальные сопли по поводу твоего "долголетнего опыта" оставлю без комментариев. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 16:07 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУa_voroninБоюсь, что на .NET я программировал уже слишком долго с первой версии ещё. GC.Collect использовал в боевом коде, использовал не раз, знаю результат. То, что кто-то написал, что сборщик мусора не надо вызывать, это его личное мнение, которое я лично проигнорирую. Боюсь, что ты просто облажался и тебе откровенно стыдно это признать. Остальные сопли по поводу твоего "долголетнего опыта" оставлю без комментариев. Боюсь, что я написал хороший качественный код, который уже 8 лет используется на американском сайте международного уровня с высоким доступом и он бы до сих пор валился без GC.Collect. А ты можешь дальше носиться с идеей о том, что сборку мусора принудительно вызывать не надо. До свиданья. Я таких как ты на собеседованиях сразу заворачиваю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 16:32 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninБоюсь, что я написал хороший качественный код, который уже 8 лет используется на американском сайте международного уровня с высоким доступом и он бы до сих пор валился без GC.Collect. Я не могу судить о качестве твоего кода, который уже 8 лет используется на американском сайте международного уровня с высоким доступом. Потому что у меня нет этого кода. Но я могу судить о твоих знаниях, особенно когда вижу удивление о том, что в .NET якобы не могут быть утечек. Твой перформанс про a_voroninУтечку на .NET? Вы батенька что-то попутали. Это не C++ вообще заслуживает отдельного респекта. С такими ляпами тебе не то, что качественный код для пиндосов писать, тебе даже в цирке места не найдется. Поэтому, прежде чем ляпнуть какую-то глупость, подумай. Это так, на будущее дружеский совет. a_voroninА ты можешь дальше носиться с идеей о том, что сборку мусора принудительно вызывать не надо. До свиданья. Я таких как ты на собеседованиях сразу заворачиваю. Я носиться никуда не буду. Я буду помнить о том, что не перевелись еще неофиты, которые думают, что в .NET утечек не бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 16:42 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninЯ таких как ты на собеседованиях сразу заворачиваю. Мне страшного представить проф пригодность компании, где человека с нулевыми знаниями по .NET допустили собеседовать разработчиков. Заверни лучше голову свою в ковёр, клоун ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 16:45 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУчто в .NET якобы не могут быть утечек. Твой перформанс про a_voroninУтечку на .NET? Вы батенька что-то попутали. Это не C++ вообще заслуживает отдельного респекта. С такими ляпами тебе не то, что качественный код для пиндосов писать, тебе даже в цирке места не найдется. Это оскорбление. С хамом больше общаться не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:27 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninЭто оскорбление. С хамом больше общаться не буду. Ты лучше бы не строил из себя девственницу, а честно признал, что был не прав. Профессионалы тоже иногда ошибаются, ничего тут страшного нет. Но ты продолжаешь включать дурака и лить крокодильи слёзы. Будь мужиком уже, в самом-то деле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:32 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУa_voroninЯ таких как ты на собеседованиях сразу заворачиваю. Мне страшного представить проф пригодность компании, где человека с нулевыми знаниями по .NET допустили собеседовать разработчиков. Заверни лучше голову свою в ковёр, клоун Сначала ты придумал, что я что-то имел ввиду, потом сделал какие-то выводу о моём уровне, на основе того, что сам сообразил, теперь на основе этой своей выдумки хамишь. до свиданье господин воображалкин. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:33 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninСначала ты придумал, что я что-то имел ввиду, потом сделал какие-то выводу о моём уровне, на основе того, что сам сообразил, теперь на основе этой своей выдумки хамишь. до свиданье господин воображалкин. Я придумал, что в .NET не бывает утечек? Я придумал, что .NET это не C++? Я начал хамски поучать перечитать, как работает распределение памяти в .NET? Я тебе дал ссылку и аргументировал твою неправоту. О каких выдумках ты тут вещаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:36 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУa_voroninСначала ты придумал, что я что-то имел ввиду, потом сделал какие-то выводу о моём уровне, на основе того, что сам сообразил, теперь на основе этой своей выдумки хамишь. до свиданье господин воображалкин. Я придумал, что в .NET не бывает утечек? Я придумал, что .NET это не C++? Я начал хамски поучать перечитать, как работает распределение памяти в .NET? Я тебе дал ссылку и аргументировал твою неправоту. О каких выдумках ты тут вещаешь? Ну то, что распределение памяти на C++ и NET отличается ты, я надеюсь, отрицать не будешь. То, что память не подлежит сборке на .NET, пока на неё есть ссылка, ты тоже отрицать не будешь. То, что в MSDN есть пример использования GC.Collect ты тоже отрицать не будешь? https://msdn.microsoft.com/en-us/library/xe0c2357(v=vs.110).aspx Теперь скажи мне, уважаемый разработчик, архитектор или кто ты. Вот ты лопатишь какие-то данные в цикле. Лопатишь долго. Читаешь файл, например, делаешь кучу операций со строками и записываешь в другой файл. Что будет происходить с памятью. Вот пройдёт 100000 витков этого цикла, а память накапливается. Тебе уже не нужны все эти строки и промежуточные значения, ты их записал в выходной файл. Но они висят в памяти. Как действовать? Какой тут сценарий без GC.Collect -- я внимательно послушаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:46 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninНу то, что распределение памяти на C++ и NET отличается ты, я надеюсь, отрицать не будешь. То, что память не подлежит сборке на .NET, пока на неё есть ссылка, ты тоже отрицать не будешь. То, что в MSDN есть пример использования GC.Collect ты тоже отрицать не будешь? https://msdn.microsoft.com/en-us/library/xe0c2357(v=vs.110).aspx Речь не в отличиях распределения памяти. Есть такое понятие, как очистка неуправляемых ресурсов. Используй безопасный дескриптор в качестве оболочки для неуправляемого ресурса. Это рекомендуемая методика. Безопасные дескрипторы это наследники SafeHandle. GC.Collect не панацея, тебе выше уже сказали. Никто никаких гарантий не даст в управлении черным ящиком. Почему это так, я тебе дал ссылку на рецепт с подробным описанием. a_voroninТеперь скажи мне, уважаемый разработчик, архитектор или кто ты. Вот ты лопатишь какие-то данные в цикле. Лопатишь долго. Читаешь файл, например, делаешь кучу операций со строками и записываешь в другой файл. Что будет происходить с памятью. Вот пройдёт 100000 витков этого цикла, а память накапливается. Тебе уже не нужны все эти строки и промежуточные значения, ты их записал в выходной файл. Но они висят в памяти. Как действовать? Какой тут сценарий без GC.Collect -- я внимательно послушаю? Во-первых, откуда в цикле взялось накапливание? Ведь я могу читать ридером прямо из источника (соединение с БД, xml, http, порты, сокеты и так далее) мимо памяти. И сразу же свопить куда-то в базу. В результате, никакого оверхеда в виде накапливания. Память не засирается, процесс происходит чисто и без шума. Какой нахрен GC.Collect? С твоими архитектурами только кур смешить. И да, почитай, что такое no tracking фетч. Поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:57 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
Вот мнение, которое я лично поддерживаю. http://stackoverflow.com/questions/233596/best-practice-for-forcing-garbage-collection-in-c-sharp The best practise is to not force a garbage collection in most cases. (Every system I have worked on that had forced garbage collections, had underlining problems that if solved would have removed the need to forced the garbage collection, and speeded the system up greatly.) There are a few cases when you know more about memory usage then the garbage collector does. This is unlikely to be true in a multi user application, or a service that is responding to more then one request at a time. However in some batch type processing you do know more then the GC. E.g. consider an application that. Is given a list of file names on the command line Processes a single file then write the result out to a results file. While processing the file, creates a lot of interlinked objects that can not be collected until the processing of the file have complete (e.g. a parse tree) Does not keep match state between the files it has processed. You may be able to make a case (after careful) testing that you should force a full garbage collection after you have process each file. Another cases is a service that wakes up every few minutes to process some items, and does not keep any state while it’s asleep. Then forcing a full collection just before going to sleep may be worthwhile. The only time I would consider forcing a collection is when I know that a lot of object had been created recently and very few objects are currently referenced. I would rather have a garbage collection API when I could give it hints about this type of thing without having to force a GC my self. See also "Rico Mariani's Performance Tidbits" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 17:58 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУВо-первых, откуда в цикле взялось накапливание? Ведь я могу читать ридером прямо из источника (соединение с БД, xml, http, порты, сокеты и так далее) мимо памяти. И сразу же свопить куда-то в базу. В результате, никакого оверхеда в виде накапливания. Память не засирается, процесс происходит чисто и без шума. Какой нахрен GC.Collect? С твоими архитектурами только кур смешить. И да, почитай, что такое no tracking фетч. Поможет. Опять на личности переходишь и опять придумываешь то, чего нет. Рассмотрим задачу, где данные не сохраняются как есть. Понятно, что из одного потока в другой направить, это не вопрос. Допустим надо не как есть сохранять, а что-то делать ещё с теми данными, которые иду по потоку. Считать, трансформировать. Но не накапливать. Ситуация заключалась в том, что память приращивалась и приращивалась, хотя указатели на эти промежуточные объекты уже были сняты. Может быть сейчас .NET оптимизировали, но некоторое число лет назад это наблюдалось. Поэтому и требовался принудительный GC.Collect. Никакого проседания производительности, как многое кричат, не было. Но сборка мусора длилась до полсекунды. На фоне многоминутных обработок, это было ничто. И память освобождалась. То есть ситуация, когда неиспользуемые объекты зависали была и и без GC.Collect не освобождалась. Дело было ещё по IIS и на фоне другой нагрузки. Вот и всё, что я хотел сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 18:54 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
Беспредметный спор. Использовать или нет деструкторы в классе зависит от задачи. Случается, но не так часто. Кода a_voronin'a мы не видели, так что... Но да, принудительная сборка мусора - скорее исключение чем правило. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 19:29 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninОпять на личности переходишь и опять придумываешь то, чего нет. Что именно я придумываю? Ты сгенерил какой-то упоротый пример для ламеров и предлагаешь его по-ламерски решать. Ты из какого курятника вылез, начальник? a_voroninРассмотрим задачу, где данные не сохраняются как есть. Понятно, что из одного потока в другой направить, это не вопрос. Допустим надо не как есть сохранять, а что-то делать ещё с теми данными, которые иду по потоку. Считать, трансформировать. Но не накапливать. Ну считывай последовательно и трансформируй. Курсоры могут не только однонаправленные, если что. Память засирать вовсе не обязательно. А ты предлагаешь засрать всю память, а потом сделать чудо с помощью GC.Collect и радоваться? Уверяю, это удел кодирующих обезьян (code monkey), а не профессионала. Десятый раз повторяю, GC.Collect в 99.9% прикладных задач не нужен. Вообще не нужен. a_voroninМожет быть сейчас .NET оптимизировали, но некоторое число лет назад это наблюдалось. Поэтому и требовался принудительный GC.Collect. Никогда он не требовался, не фантазируй. Грамотный код и корректные алгоритмы всегда справлялись без этого magic подхода. a_voroninВот и всё, что я хотел сказать. Ты научись сначала с дотнетом работать прямыми руками, а там, глядишь, и GC.Collect не понадобится. Вообще не понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 20:21 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
AxeleronБеспредметный спор.Полезный комментарий, спасибо. А то уже собирался читать топик :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 08:42 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
skyANA Полезный комментарий, спасибо. А то уже собирался читать топик :) Тот редкий случай, когда МСУ полностью прав. Видимо затмение сказывается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 10:44 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
ЕвгенийВТот редкий случай, когда МСУ полностью прав. Видимо затмение сказывается :) А судьи-то кто? Школота и обезьянки? Спасибо, повеселил ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 11:05 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУА судьи-то кто? Экс-глава Минсельхоза Елена Скрынник. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 11:48 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
ЕвгенийВЭкс-глава Минсельхоза Елена Скрынник. Ну хоть не Андрей Киска. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 11:58 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
ЕвгенийВskyANA Полезный комментарий, спасибо. А то уже собирался читать топик :) Тот редкий случай, когда МСУ полностью прав. Видимо затмение сказывается :) Прибежали поддакиватели. Для начала надо не быть столь откровенным хамом. Такой человек может и знает многое, но в коллективе он опасен, поскольку от его демонстрации превосходства начнут уходить те, кто делает работу, а будет ли он делать работу еще большой вопрос. И я не надо быть столь наивным, чтобы считать, что он всегда прав. Вот это тоже считаете бредом, например? 9372672 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 12:01 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
a_voroninДля начала надо не быть столь откровенным хамом. Это ты про свой ответ 17402256 на счет того, что я попутал и что мне надо перечитать, как работает распределение памяти? Забавно. a_voroninТакой человек может и знает многое, но в коллективе он опасен, поскольку от его демонстрации превосходства начнут уходить те, кто делает работу, а будет ли он делать работу еще большой вопрос. Тебя понесло не в ту степь, начальник. Какое превосходство, какой коллектив? Если ты не умеешь общаться с людьми, не надо переваливать с больной головы на здоровую. Если бы ты уважительно задал вопрос, а не стал выё..ться, я бы тебе уважительно ответил, как нормальному мужику. А когда ты по-хамски начал ерничать, а потом женские обиды кидать, а потом еще и идиотские кейсы приводить с переполнением памяти в цикле, так это вообще цирк. Вместо того, чтобы остановиться и осознать свою ошибку, ты начал дальше и глубже себя закапывать в яму. И где тут моя вина, начальничек? a_voroninИ я не надо быть столь наивным, чтобы считать, что он всегда прав. Вот это тоже считаете бредом, например? 9372672 Давай по теме, начальник. Прав или не прав, какая разница. Будь проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 12:36 |
|
Поедание памяти процессом.
|
|||
---|---|---|---|
#18+
МСУДавай по теме, начальник. Прав или не прав, какая разница. Будь проще. Да я-то попроще. Поражает твоя мания "читать между строк", то есть вкладывать в слова смысл, которого в них нет. Вот интересно, где я сказал, что являюсь или был начальником? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 12:42 |
|
|
start [/forum/topic.php?fid=20&msg=38910319&tid=1401777]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
117ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 219ms |
0 / 0 |