Size: a a a

2021 January 15

OB

Oleg B in dlang.ru
Макс Воробьев
окей. как gc должен понять, когда указатель можно освободить?
он сканирует при выделении новой памяти
источник

МВ

Макс Воробьев... in dlang.ru
Oleg B
он сканирует при выделении новой памяти
как?
источник

OB

Oleg B in dlang.ru
мы ж обсуждали, останавливает потоки, смотрит в указатели на стеки этих потоков, смотрит какая память из этих стеков доступа (указатель на что ещё хранится), а какая нет, если доступна, то помечает как ок, потом проходит по всей выделенной памяти и если нет отметки "ок" то удаляет
источник

OB

Oleg B in dlang.ru
можно выстрелить в ногу: кастануть указатель к void*, записать в size_t, ждать пока сборщик уберётся, обратно size_t к указателю привести и вуаля
источник

OB

Oleg B in dlang.ru
во время сканирования сборщик не будет знать, что ты всё ещё хранишь эту память
источник

МВ

Макс Воробьев... in dlang.ru
окей. 1) остановить ВСЕ потоки. 2) пройтись по всем root скопам (графам) и пометить. 3) все, что не помечено - удалить. и это для тебя проче, чем copy и move ?
источник

OB

Oleg B in dlang.ru
т.к. для него это будет просто число
источник

OB

Oleg B in dlang.ru
Макс Воробьев
окей. 1) остановить ВСЕ потоки. 2) пройтись по всем root скопам (графам) и пометить. 3) все, что не помечено - удалить. и это для тебя проче, чем copy и move ?
в использовании??? конечно!
источник

OB

Oleg B in dlang.ru
не я же в каждой программе пишу код уборки мусора
источник

OB

Oleg B in dlang.ru
он уже написан и просто используется
источник

МВ

Макс Воробьев... in dlang.ru
а цена использования - это 10-й вопрос?
источник

OB

Oleg B in dlang.ru
я об этом начинаю думать только когда нужно подумать о производительности
источник

OB

Oleg B in dlang.ru
Макс Воробьев
а цена использования - это 10-й вопрос?
можно сделать главный цикл без выделения памяти
источник

OB

Oleg B in dlang.ru
она выделится 1 раз (ну или пока не придёт к равновесию) а потом в процессе работы выделяться не будет
источник

OB

Oleg B in dlang.ru
при этом расход памяти более понятный: максимальный для входных данных
источник

OB

Oleg B in dlang.ru
Oleg B
при этом расход памяти более понятный: максимальный для входных данных
всмысле он не скачет туда-сюда, просто выделилось сколько нужно для работы и всё
источник

МВ

Макс Воробьев... in dlang.ru
Oleg B
всмысле он не скачет туда-сюда, просто выделилось сколько нужно для работы и всё
и ? все-равно у тебя в процессе работы нужно проверять, что из выделенной тобой памяти можно переиспользовать
источник

OB

Oleg B in dlang.ru
нет
источник

МВ

Макс Воробьев... in dlang.ru
что нет?
источник

OB

Oleg B in dlang.ru
с чего нужно проверять?
источник