Если вы часто заменяете функции, собирает ли Джулия мусор старого кода?

#julia

#джулия

Вопрос:

В типичном приложении код не слишком часто заменяется, поэтому вопрос о том, освобождается ли старый код до завершения процесса, не имеет значения. Однако вариант использования, о котором я думаю, не является типичным. Если бы я часто заменял функции, будет ли Джулия собирать мусор из старого кода (исходного, скомпилированного и всех промежуточных представлений)?

Ответ №1:

Насколько я понимаю, сгенерированный код никогда не освобождается.

См., Например, Обсуждение в https://github.com/JuliaLang/julia/issues/14495 .

Комментарии:

1. «добавлено к этапу 0.5.0 28 декабря 2015 года»

2. «удалено это с этапа 0.5.0 29 декабря 2015 года»

3. @MattB. или кто-нибудь, кто может знать: это ограничение самой платформы LLVM или просто то, как Джулия ее использует?

4. Я не уверен, какие ограничения существуют на стороне LLVM, но обратите внимание, что старые методы (которые вы заменили) все еще могут вызываться другими задачами или потоками, чей мировой возраст заблокирован. Я бы предположил, что простое определение того, что конкретный метод может быть GC’ed, было бы очень дорогостоящей вычислительной задачей.