Вероятно, для каких-то молодых камрадов это будет откровением, ибо каждая книжка по Шарпам уже с первых глав нас знакомит с тем, что в C# за сборкой мусора следить не надо. Однако это маркетинговая выдумка. В высоко нагруженных проектах вроде OsEngine, как только ты не проследил за удалением объектов и выкинул это из головы, началась утечка памяти.
Я и сам, как программист-самоучка, очень много лет проживал в этой парадигме, от чего было много проблем как у меня, так и у пользователей OsEngine.
И в этом посте поговорим о том, какие штуки надо обязательно подчищать за собой при удалении коннектора. А вернее при вызове его обязательного к перегрузке метода DISPOSE();
Очень часто коннектор нуждается в перезапуске. Это обусловлено свойствами работы сети интернет. В этот момент у ServerRealization вызывается метод Dispose. Все манипуляции по очищению памяти и переменных нужно делать из этого метода. И ни из какого другого…
Сборщик мусора в C# всё же есть, и обращаться к нему на прямую не стоит. Однако он убирает из памяти только те объекты, на которые нет ссылок!
В связи с этим есть несколько общих правил во время создания и удаления объектов.
Эти простые правила помогут Вам во время написания коннектора.
Рис. 1. Правильное закрытие и подготовка webSocket к очищению из памяти сборщиком мусора. BitGet
После этого, если объект webSocket нигде больше не указан по ссылке, объект может быть очищен сборщиком мусора. Целенаправленно вызывать сборщик не следует, ибо это ресурсозатратное мероприятие. Сборщик сделает своё дело тогда, когда это будет нужно.
Рис. 1. Правильный и защищённый Dispose. BitGet
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР:https://smart-lab.ru/company/os_engine/blog/972745.php