Возможно ли для неинтерпретируемого языка сборщик мусора. В интерпретируемых языках Интерпретор исполняет Программу построчно, поэтому Интерпретор может с таким же успехом предоставлять GC среду выполнения. Но возможно ли иметь сборщик мусора для любого другого языка без встроенного GC в самом коде?
Сборка мусора требует, чтобы переменные-указатели были помечены специальным образом, чтобы среда выполнения могла их идентифицировать и использовать для сбора мусора. Он не имеет ничего общего с интерпретацией / компиляцией, но вместо этого требует специального времени выполнения и сохранения дополнительных данных для каждой переменной.
Ну, языки .NET (которые выдают в IL - C #, VB.NET, MC ++ и т. Д.) Не интерпретируются (особенно если вы используете NGEN) - и имеют полную сборку мусора.
Аналогично, Java.
Да - http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Haskell имеет сборку мусора, независимо от того, скомпилирован ли он в собственный код или интерпретирован.
Для фактической реализации на скомпилированном языке, в данном случае C и / или C ++, см. Boehm GC на http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Новый C ++ 0x включает в себя функции, облегчающие реализацию сборки мусора. См. Например, интервью .
Objective-C 2 теперь имеет сборку мусора, и для C ++ также доступны библиотеки сбора мусора.
Я думаю, что это возможно, пока он существует, язык позволяет вам проверять объекты, чтобы вы могли пройти по дереву объектов.
Да.
C ++ с реализацией интеллектуального указателя будет собирать мусор, когда счетчик ссылок интеллектуального указателя стремится к нулю.
У вас есть сборка мусора. Вы не строили это сами.