powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ленивая очистка. Продолжение
25 сообщений из 144, страница 2 из 6
Ленивая очистка. Продолжение
    #38267042
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAВы же поняли, что автор за то, чтобы писать более удобочитаемый и поддерживаемый HTML/CSS код, а не гнаться за максимальной производительность.Да все с ним ясно...С Вами тоже всё ясно.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267052
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, тут все про всех всё знают, души как на ладони
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267066
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttписец, я долбаном детском саду или в дурке. что ну-ну? чо эт значит?
это значит есть ситуации, когда финализатор может не вызваться. Рихтера цитировать не буду.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267182
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилhVosttписец, я долбаном детском саду или в дурке. что ну-ну? чо эт значит?
это значит есть ситуации, когда финализатор может не вызваться. Рихтера цитировать не буду.
Так ему об этом уже раз десять сказали. Доселе невнял?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267248
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthandmadeFromRu,

я только и слышу «так неправильно»... «так нельзя»... «это зло»... ну а теперь еще «искусственно»...

почему???? как достучаться до вас!?? если вы такие УМНЫЕ, объясните! а если не можете, так и не пишите тогда ничего.
1) твой класс не управляет файлами вообще никак, но ты умник на его финализатр кинул чистку файла, искусственно дал ему эту функцию
2) твой говнокод с сессией обломиться если шарехостинг сдохнет, такие хостинги как паркинг регулярно падают и хер там твой финализатор вызовется (свет отрубили, винда упала изза дров, диск покрошился)

да блин элементарно подчищать можно не завися от сессии и финализатора.
Везде чистить по дате создания:
1) фоновый сервис отдельно от сайта раз в N- времени
2) фоновый процесс внутри сайта, но если апп выгрузиться то тут надо пошаманить раз в N- времени
3) самый тупой от каждого реквеста на контролер/страницу из пула брать поток фоновый и давать задачу на чистку
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267459
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperhVosttя только и слышу «так неправильно»... «так нельзя»... «это зло»...

hVosttвешать стили на id — зло во плоти, не вздумай больше такое никому советовать. никогда.

Этопять

для тебя и твоим же языком. чего смешного? у тя с головой-то все ок? эхх.. доходяга...
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267463
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другой удачный способ применения финализатора — проверка очистки объекта перед удалением. Если объект при создании или по ходу своей работы захватывает ценные системные ресурсы, кроме памяти (открывает файлы или коммуникационные каналы, подключается к устройствам ввода-вывода), то, очевидно, в момент удаления объекта сборщиком мусора все эти ресурсы должны быть уже освобождены (то есть объект должен быть очищен). Ошибки очистки (когда объект в некоторых ситуациях не очищается или, что ещё хуже, очищается не полностью) очень коварны, их сложно выявлять, так как проявляются они при выполнении совсем не той части кода, где допущена ошибка. Как уже говорилось, проводить очистку в финализаторе неразумно, так как неизвестно, когда он будет вызван и вызовется ли вообще. Зато в финализаторе вполне уместно и удобно провести проверку того, полностью ли очищен объект, и выдать, в той или иной форме, сообщение об ошибке, если какой-то ресурс остался захваченным. Неважно, что финализатор может быть вызван поздно и не каждый раз; всё равно, если ошибка очистки объекта имеется, то рано или поздно финализатор «поймает» её.

я бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.

если приложение фатально рухнет, конечно финализаторы не вызовутся. я это учел. папка должна очищаться перед стартом/рестартом приложения.

на текущий момент, загружено более 10000 файлов, папка чистенькая, в логе исключений нет. спецом отключил очистку папки при запуске приложения. ну скажите мне, какие меня ждут проблемы? стоит ли опасаться?

пока убедительных аргументов никто не привёл. зато поумничать в том или ином виде успели многие. аплодирую стоя. за упёртый мудизм. обращаюсь к МСУ — харе выдерать слова из контекста и пулять их с понтом «аагггга! подловил!!! бугааагаааг». эт детсад, осталось клоунов еще позвать. нечего по делу сказать, так лучше молчи. и не смеши народ. тем более это уже даже не смешно.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267470
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu1) твой класс не управляет файлами вообще никак, но ты умник на его финализатр кинул чистку файла, искусственно дал ему эту функцию
2) твой говнокод с сессией обломиться если шарехостинг сдохнет, такие хостинги как паркинг регулярно падают и хер там твой финализатор вызовется (свет отрубили, винда упала изза дров, диск покрошился)

да блин элементарно подчищать можно не завися от сессии и финализатора.
Везде чистить по дате создания:
1) фоновый сервис отдельно от сайта раз в N- времени
2) фоновый процесс внутри сайта, но если апп выгрузиться то тут надо пошаманить раз в N- времени
3) самый тупой от каждого реквеста на контролер/страницу из пула брать поток фоновый и давать задачу на чистку

функция класса — управлять удалением файла. это его единственная функция. требованиям его работа полностью отвечает. что не так? где проблема? тыкните носом. если шаред внезапно сдохнет, конечно финализаторы не сработают, но приложение перезапустится, а при перезапуске (при старте) папка очищается — это называется «приведение приложения в изначальное состояние», все логично.

1. фоновый сервис — в топку, сразу без разговоров. даже обсуждать это баранье решение не буду.

2. фоновый процесс внутри сайта значит лучше, да? чем? почему? где блин хоть один аргумент?

3. это действительно самый тупой. мой маленький класс, с единой ответственностью, против целой эпопеи с запуском каких-то оторванных от задачи процессов, запускаемых неизвестно кем... вот уж точно, чтобы выкопать ямку мы пригоним экскаватор. убить воробья, мы пригоним целый батальон артиллерии и еще для верности вызовем пару бомбардировщиков.

вы меня поражаете. дайте угадаю, это уже дело принципа? аргументы будут?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267471
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.Зачем для этого Рихтер? GC.SuppressFinalize(this) достаточно.

Где гарантия, что в каком-нибудь наследуемом классе из левой сборки эта фигня не запилена?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267477
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyhVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.Зачем для этого Рихтер? GC.SuppressFinalize(this) достаточно.

Где гарантия, что в каком-нибудь наследуемом классе из левой сборки эта фигня не запилена?

это не библиотека. если бы я делал библиотечное решение, подход был бы совсем другой.

GC.SuppressFinalize я точно вызывать не буду для этого класса. а другие компоненты не будут использовать этот класс. у него только один потребитель. это достаточные условия для выполнения нужных гарантий?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267484
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто не библиотека.Вот это новость. Вы экзешники под иисом крутите?
hVosttGC.SuppressFinalize я точно вызывать не буду для этого класса. а другие компоненты не будут использовать этот класс. у него только один потребитель. это достаточные условия для выполнения нужных гарантий?Ну вот так и говорите, "по-любому, 100% в моих условиях ". А не вообще, да еще с апелляциями ко всяким рихтерам.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267489
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

признаю свою ошибку. да действительно совсем позабыл сказать, что я не буду запрещать запуск финализатора для своего класса вручную и никакие «левые» библиотеки тоже не будут. я со всех библиотек взял предварительно клятвенное обещание. вселенную на всякий случай тоже попросил.

а понятия библиотека от понятия сборка все же отличается. не физически, так логически. но я тут тоже могу дико ошибаться. поправьте если что.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267491
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если все эти подколки типа «ну-ну» и т.п. крутятся вокруг одного только GC.SuppressFinalize, то я умываю руки.

тогда надо учесть еще и хомяка. вы учли хомяка? он перегрызвает провода. как силовые, так и сетевые. если этот хомяк вас сбивает с толку, типа что еще за хомяк, то его зовут Хома. его никто не видел, но он есть. еще бывают землетрясения, они тоже могут помешать выполниться долбанному финализатору. и Путин тоже может испортить всю малину. энергетиков, кстати, вы учли? а злобные хакеры, бессовестно вмешивающиеся в работу серверов? а уборщицу, которая усиленно трет пол, задевая как будто специально провод серверного питания и проливающего воду на ИБП?

нет? ну чтож. давайте обсудим это.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267496
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа понятия библиотека от понятия сборка все же отличается. не физически, так логически.IIS работает с файлами, а не понятиями. И тип этих файлов — библиотека. dynamic link library.

hVosttесли все эти подколки типа «ну-ну» и т.п. крутятся вокруг одного только GC.SuppressFinalize, то я умываю руки.Понятия не имею, вокруг чего крутились чьи-то подколки. Я просто заглянул и вспомнил про SuppressFinalize. Мало чего я еще не вспомнил.

hVosttнет? ну чтож. давайте обсудим это.Достаточно убить и перезапустить процесс, чтобы файлы разблокировались и стерлись, сами же сказали. Хомяки это из пушки по воробьям.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267724
hVosttда действительно совсем позабыл сказать, что я не буду запрещать запуск финализатора для своего класса вручную и никакие «левые» библиотеки тоже не будут
Дурень, не финализатора, а деструктора. Разницу понимаешь? Финализатор вообще категорически запрещается трогать. Ладно, спишем на то, что оговорился.

http://msdn.microsoft.com/ru-ru/library/66x5fx1b.aspx If your application is using an expensive external resource, we also recommend that you provide a way to explicitly release the resource before the garbage collector frees the object. You do this by implementing a Dispose method from the IDisposable interface that performs the necessary cleanup for the object.

Или опять скажешь, что рекомендации от нашего вендора - филькина грамота?

Далее.

hVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.

РихтерБеда в том, что разработчики ошибочно полагают, что использование синтаксиса деструктора означает в С # детерминированное уничтожение объектов типа, как это происходит в С++ .Но CLR не поддерживает детерминированное уничтожение, поэтому С# не может предоставить этот механизм.

РихтерПри первом создании любого объекта, производнаго от типа Сritiсаl - FinalizerObject, CLR автоматически запускает JIT -компилятор, компилирующий все методы финализации в иерархии наследования. Компиляция этих методов после создания объекта гарантирует, что машинные ресурсы освободятся, как только объект станет мусором. Без компиляции метода финализации возможно лишь выделение и использование ресурсов, но не их освобождение. При недостатке памяти CLR не сможет найти достаточно памяти для компиляции метода финализации. Автоматическое управление памятью (сборка мусора) будет исполнен, что приведет к утечке машинных ресурсов. Также ресурсы не освобождаются, если код в методе финализации содержит ссылку на тип в другой сборке, которая не была обнаружена CLR

Таким образом, если нужна гарантированная финализация, нужно смотреть в сторону класса CriticaiFinalizerObject. Только зачем эти грабли нужны для такой задачи, как у тебя. Сотый раз повторяю, что это нужно использовать при захвате unmanaged объектов. В твоем случае, ты вообще используешь логику в деструкторе. Убей себя. Серьезно.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38267819
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) конкретный финализатор может не вызваться при зацикливании одного из финализаторов
При завершении процесса выполнение финализаторов может быть прервано при превышении таймаута на отдельный финализатор или таймаута на всю очередь

2) для завершения рабочего процесса IIS никакой хомяк не нужен.
рабочий процесс может быть планово перезапущен после обработки определённого числа запросов,
превышении лимита занимаемой памяти и внепланово по "состоянию здоровья" и т д

3) перезапуск рабочего процесса приводит к потере состояния сессий(если сохранение состояние сконфигурировано как InProc)

4) сохранение состояние отличное от InProc(StateServer,SQL Sever,Custom) производится сериализацией/десериализацией со всеми вытекающими последствиями

5) финализаторы в IIS вызываются с правами рабочего процесса

Достаточно?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269334
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

с сессиями понятно. данное решение подходит только для InProc сессий, для других форм неуместно. InProc сессия довольно нестабильна и надо разрабатывать так, как будто сессия вообще толком не работает, выполняя по сути кеширующий для пользователя механизм, не более того. т.е. логика работы приложения не должна опираться на наличие сессии.

на счет использования финализатора для удаления файла. да, в общем такое использование финализатора выходит за рамки рекомендаций. т.е. финализатор не должен участвовать в логике , а плановое удаление файлов это все-таки логика. поэтому данное решение мною рассматривалось для удовлетворения академического интереса. и пока что отлично работает. но в целом, так делать не стоит. потому что цель финализатора несколько другая. о чем написано кучу талмудов и что составляет муськину грамота — о том же :)

в общем да, достаточно, спасибо за 5 пункт. есть еще что поисследовать.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269335
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Муся в бане,

:) рад, что добился вразумительного ответа. в целом ты прав. вендоры не советуют лезть в финализатор со своей логикой.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269620
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, очень рад, что терез тернии, терзания сознания и избиение плетью тебя, таки, удалось вразумить. Похвально.

Теперь переключаемся на второй вопрос, с которого ты как-то лихо съехал и всё забылось под беспощадным гнётом твоей беспринципной напористости. Ну, конечно же, вопрос о сессии! Итак, согласен ли ты, что сессия - зло?

P.S. Набрал попкорна
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269744
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269757
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А альтернатива имеется?
Сессия, она как работает, есть в браузере сессионная кука, по этой куке берутся некоторые данные. В общем-то, всё.
Дёшево и сердито.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269760
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы
Не выкручивайся, как гнусный червяк, ты понял о чем речь :) О том же, о чем и твои декструторы. Речь о логике, разумеется.
Вопрос повторить?
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269763
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА альтернатива имеется?
Сессия, она как работает, есть в браузере сессионная кука, по этой куке берутся некоторые данные. В общем-то, всё.
Дёшево и сердито.
Не, Серж. С этим всё хорошо, речь о том, что ты свой прикладной код и логику реализуешь с помощью сессии. Он понял о чем речь, просто выкручивается.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269792
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

разумеется сессию можно использовать для логики. например, пошаговые визарды для анонимов, состояние которых можно сохранять в сессии. ибо гадить в куки или вкручивать стейт в страницу — не всегда разумное решение.

в основном сессия выполняет роль кеширующего механизма для посетителя/пользователя.

но если:

1. существует «риск» масштабирования приложения на несколько серверов в будущем
2. нет (и/или не будет) контроля за конфигурацией сессии
3. не понятно что же это такое и как оно работает

— забыть про использование сессий в личных целях. можно окрестить её злом и забыть на веки вечные.
...
Рейтинг: 0 / 0
Ленивая очистка. Продолжение
    #38269802
hVosttМСУ,

сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы +1. Четкий ответ.
Сессия - это данность. Она есть и все. Бест практис никто не отменял.
А реверансы "слегка повышенного риска" - ну не надо бояться говорить. Найдется тонна объектов пострашнее сессии, которые юзают и - ничего.
троллиИдет расклейка ярлыков - через неправильное использование клеится ярлык на некоторую область. Так я смогу аппроксимируя доказать что .Net (ровно как и что угодно) - говно, зло и полный отстой.
...
Рейтинг: 0 / 0
25 сообщений из 144, страница 2 из 6
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ленивая очистка. Продолжение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]