powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Остановка потоков сервиса на период сборки мусора.
25 сообщений из 61, страница 2 из 3
Остановка потоков сервиса на период сборки мусора.
    #39369392
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.
Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369544
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в свое время компания трейдер - елмакс двинула проект disruptor, так вот, там они отказались вообще от уборки мусора.
архитектурное решение довольно интересное.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369559
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

на C++ небось перешли?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369575
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.

В режиме многопоточного частого чтения и периодической записью не будет.
Это надо профайлить. Так не угадаешь. + есть вариант ридерарйтерлок.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369577
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.
Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 
var dict = new ConcurrentDictionary<int,byte>();
            for (int i = 0; i < 10 * 1000 * 1000; i++)
                dict.TryAdd(i, 0);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();


Так 700 мегабайт
Код: c#
1.
var dict = new Dictionary<int,byte>();


Так 200.
Его 3 гб могут превратиться в 500 мб.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369603
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Так 700 мегабайт
Код: c#
1.
var dict = new Dictionary<int,byte>();


Так 200.
Его 3 гб могут превратиться в 500 мб.
там реально byte используется? Если так и int только положительный, то можно так
Код: c#
1.
var dict = new byte[2Гб];


займет 2 Гб и никакой сборки мусора не понадобится.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369609
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Так 200.
Его 3 гб могут превратиться в 500 мб.

Настолько жирно-толсто-натянутый пример, что даже не смешно.
Байты в словаре?
Серьёзно!?
А чего так жирно, давай биты!
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369665
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369679
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369687
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDenis.hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369775
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Сборку вызывает давление на память, а не количество бесхозных рутов.

Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369776
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками

Ты взял заведомо некорректный пример, который весьма далёк от жизни. Всё что ты выяснил, это то, что ConcurrentDictionary потребляет дополнительную память. И это никогда не скрывалось, всё имеет свою цену.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369778
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Dima Tпропущено...

Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов.
Согласен, но так понижается частота сборки мусора, а у ТСа проблемы из-за времени одной сборки.

Теоретически общее количество объектов при использовании Dictionary может быть меньше, мы же не знаем что там дополнительно создается для работы самих Dictionary/ConcurrentDictionary. Только непонятно как это померить. Не нашел как посмотреть сколько объектов создано на текущий момент.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369802
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDenis.Сборку вызывает давление на память, а не количество бесхозных рутов.

Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении.
Я сомневаюсь что у него 100мс чистится 0 поколение. А можно ссылку на источник что колво объектов важно?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369833
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Как это делается? Как сделать словари рутами?

Спасибо.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369849
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003Pallaris,

Как это делается? Как сделать словари рутами?

Товарищ hVostt уже писал 20011426 - кэширование, как вариант - реализовать какой-то синглетон-сервис, который будет в себе хранить ссылки на объекты словарей в течении всей жизни приложения. По необходимости обращаться к сервису за нужными словарями.

Кстати, это 100% инфа, что приложение приунывает из-за сборки мусора?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369883
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netСделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.

Переиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. Если используются одни и те же данные, то единственно верным будет организация грамотного кеширования.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369896
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.А можно ссылку на источник что колво объектов важно?

https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx

MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1.

Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369900
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netВижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.

Какой ещё риск? Если данные лежат в кеше, то GC их собирать не будет. Если данные вытесняются из кеша, значит достиг предел использования памяти. Либо заданное в настройках ограничение достигнуто, или реально свободной памяти становится мало. При чём тут GC? Это уже обсуждение механики работы кеша.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369905
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПереиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата.

У ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH".
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369909
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКакой ещё риск?

Риск такой, что в кэше по ключу создается другой объект.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369925
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Да, PerfView - Это показывает.

Event Name Time MSec DURATION_MSEC Count Depth
Microsoft-Windows-DotNETRuntime/GC/Stop 242 499,616 985,262 478 2
Microsoft-Windows-DotNETRuntime/GC/Stop 400 108,341 101,213 489 1
Microsoft-Windows-DotNETRuntime/GC/Stop 527 150,331 96,683 498 0
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netУ ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH".

Не согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369927
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Пробовал на 4.6 перейти? Можешь это сделать на тестовом стенде или это проблематично?
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Остановка потоков сервиса на период сборки мусора.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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