Size: a a a

Rust — русскоговорящее сообществo

2020 November 21

А

Алексей in Rust — русскоговорящее сообществo
Алексей
Обычно да. Но когда происходит, то вся программа стопается на время работы гц. И паузы там могут быть немаленькими.
Хотя это от гц зависит, есть concurrent gc, у которых очень маленькие паузы, но они дополнительно в фоне работают.
источник

RS

Roma S in Rust — русскоговорящее сообществo
/bin/cat
Можно его запустить
зачем? %)
источник

MZ

Max Zhuravkov in Rust — русскоговорящее сообществo
Если gc не умеет удалять недостижимые объекты которые между собой образуют циклы, то зачем нужен такой gc?
источник

/

/bin/cat in Rust — русскоговорящее сообществo
Ну скажем прога может минут 30 работать с мусором
источник

А

Алексей in Rust — русскоговорящее сообществo
Max Zhuravkov
Если gc не умеет удалять недостижимые объекты которые между собой образуют циклы, то зачем нужен такой gc?
То это уже вовсе не gc получается.
источник

/

/bin/cat in Rust — русскоговорящее сообществo
А потом гц триггерит
источник

А

Алексей in Rust — русскоговорящее сообществo
/bin/cat
Ну скажем прога может минут 30 работать с мусором
ну и что?
источник

А

Алексей in Rust — русскоговорящее сообществo
Гц вообще обычно на старте какой-то кусок памяти резервирует
источник

RS

Roma S in Rust — русскоговорящее сообществo
Max Zhuravkov
Если gc не умеет удалять недостижимые объекты которые между собой образуют циклы, то зачем нужен такой gc?
мб речь про всякие systems boundaries, типа JNI, где гц не поможет, если не задиспоузить.
и есть "лики", с которыми гц не поможет, например в жаве какие-нибудь статик коллекции/кэши
источник

А

Алексей in Rust — русскоговорящее сообществo
Roma S
мб речь про всякие systems boundaries, типа JNI, где гц не поможет, если не задиспоузить.
и есть "лики", с которыми гц не поможет, например в жаве какие-нибудь статик коллекции/кэши
Да не обязательно статик, если в достижимую коллекцию постоянно запихивать объекты которые уже не нужны, то будет лик. Ещё кстати в языках с гц как правило нужны особые средства для работы с ресурсами, которые отличны от памяти, потому что гц может вызвать финализатор при удалении в непредсказуемый момент времени, либо вообще не вызвать.
источник

А

Алексей in Rust — русскоговорящее сообществo
Алексей
Да не обязательно статик, если в достижимую коллекцию постоянно запихивать объекты которые уже не нужны, то будет лик. Ещё кстати в языках с гц как правило нужны особые средства для работы с ресурсами, которые отличны от памяти, потому что гц может вызвать финализатор при удалении в непредсказуемый момент времени, либо вообще не вызвать.
Но такой лик - это довольно грубая ошибка.
источник

А

Алексей in Rust — русскоговорящее сообществo
Roma S
мб речь про всякие systems boundaries, типа JNI, где гц не поможет, если не задиспоузить.
и есть "лики", с которыми гц не поможет, например в жаве какие-нибудь статик коллекции/кэши
Да, boundaries - это тоже проблема, потому что gc может и живые объекты по памяти перемещать для дефрагментации кучи. Поэтому ему надо говорить, что определённые объекты, ссылка на которых ушла в нативный код, перемещать не надо.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Eugene
в haskell часто память течёт?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
В Хаскелле она ещё течёт очень мерзко из-за нестандартной модели исполнения
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Нужно понимать внутрянку хаскелля, чтобы она не текла
источник

E

Eugene in Rust — русскоговорящее сообществo
спасибо!
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Без понимания модели исполнения, например, неочевидно, почему пример с foldl течёт
источник

А

Алексей in Rust — русскоговорящее сообществo
Emmanuel Goldstein
В Хаскелле она ещё течёт очень мерзко из-за нестандартной модели исполнения
это спейс лик же
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Алексей
это спейс лик же
Технически да
На практике часто индифферентно, особенно для хаскелля — можно легко себе случайно собрать память, которая до конца программы не освобождается
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Сам хаскелльвики это называет memory leak, например
источник