All streams
Search
Write a publication
Pull to refresh

Comments 22

Смешались в кучу кони, люди... (c)

Да, я уже понял, что меня часто уносит в сторону)) По сути нужно было объяснить только StopTheWorld, первый блин комом... Буду учиться не миксовать такие смеси...

Поправил, оставил мясо....

🔴 Что такое Stop-The-World

📍 Зачем нужны SafePoints

🧩 Что делает функция GC_POLL()

🧹 Что делает GC

Зачем тут этот пёстрый мусор? Почему на GC_POLL() пазл, он сломан и его надо пересобрать?

Перестаньте копировать текст из ИИ без редактирования, это неопрятно.

Поправил, с ИИ я только редактирую, исходный материал из головы...

Маловато технических деталей и не хватает сравнения с bdwgc, но как идея статьи - интересновое.

Я пока не пойму свой формат))
С одной стороны, много технических деталей - легко уйти в сторону, статья раздувается, люди не хотят читать)
С другой, я сам лично не понимаю, как без техники, можно быстро объяснить такую сложную концепцию, как сборку мусора))
Вообщем это ИТ сообщество, одним нужно погружение, другим по верхам) Куда склоняться, непонятно))

Попробуй всё-таки найти свою нишу. Я вот нашёл такую нишу - FTN-сети, и Фидонет в частности.

Я тестирую сначала формат A/B, все дела, а вот с нишей надо бы тоже определиться, да))

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

Если вы использовали .NET чтобы рассказать как работает GC то ваша интерпретация очень далека от того как он работает - там нет GC_POLL вызовов в коде (за очень редким исключением аля pinvokes) циклах и т.п.

Я подписал, что GC_POLL - это для упрощения, обычно везде ассемблерная вставка прыжка и call, если флаг поднят, в статье подписано

нет никаких ассемблерных вставок для GC_POLL в .NET. Покажите мне где вот тут (sharplab) вставка?

Вот оно, раскидано везде по C# коду

В первом на одну строчку ниже выделил, ну да ладно

Нет. это не GC poll, вы смотрите дебажный асм (даже если запустили в Release, т.к. при отладке вижла всегда сбрасывает код в Tier0-dbg) и условный переход который вы мне показываете это

       cmp      dword ptr [(reloc 0x7ffe048bca18)], 0
       je       SHORT G_M000_IG04
G_M000_IG03:                ;; offset=0x0021
       call     CORINFO_HELP_DBG_IS_JUST_MY_CODE

Это подсказка деббагеру что код вошёл в "my code" для фичи "Debug just my code"

Ещё раз повторю - .NET не использует явные сейф поинты (как, например, Java) - у этого подхода свои плюсы/минусы.

да, посидев за другим отладчиком, вы правы, похоже GC .net останавливает потоки в основном на аккокаторах и еще по всячески хитро...
По сути этот cmp меня и погубил, похож собака на классику...

похоже GC .net останавливает потоки в основном на аккокаторах

это не так. часть методов в дотнет полностью fully interruptible и в какой момент бы поток не приостановился - он будет в сейфпоинте. в других методах используется return address hijacking т.е. любой вызов любого метода становится потенциальным сейфпоинтом.

Плюсы: никаких лишних инструкций в циклах и где либо еще, мгновенная остановка треда в fully-interruptible
Минусы: большой (по размеру) GC info (чтобы precise GC знал что сканировать на каждой инструкции fully-interruptible метода. Менее прогнозируемое время до паузы при call hijacking. необходимость сохранять и ресторить return address в стек в каждом методе

Тоесть .NET
1. Подменяет адрес возврата на стеке?
2. С какими-то не парится, где не трогаются управляемые объекты, стопит их полностью?
3. Код аллокации?

В Swift используется ARC, а не Garbage Collector — это совершенно разные вещи

Как вы всё надоели...

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

В любом случае, если есть спец. по конкретному GC, я бы попросил в комментариях 2 слова о подробностях работы, а не спам типа "аааа этот не так"

А вот это уже неконструктивное общение, я бы даже сказал, грубое.

Понимаю, что обидно, но держите себя в руках, тут не ванильная соцсеть.

Sign up to leave a comment.

Articles