Может ли неинтерпретируемый язык иметь сборщик мусора? - PullRequest
5 голосов
/ 06 мая 2009

Возможно ли для неинтерпретируемого языка сборщик мусора. В интерпретируемых языках Интерпретор исполняет Программу построчно, поэтому Интерпретор может с таким же успехом предоставлять GC среду выполнения. Но возможно ли иметь сборщик мусора для любого другого языка без встроенного GC в самом коде?

Ответы [ 8 ]

11 голосов
/ 06 мая 2009

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

6 голосов
/ 06 мая 2009

Ну, языки .NET (которые выдают в IL - C #, VB.NET, MC ++ и т. Д.) Не интерпретируются (особенно если вы используете NGEN) - и имеют полную сборку мусора.

Аналогично, Java.

5 голосов
/ 06 мая 2009
3 голосов
/ 14 июля 2009

Haskell имеет сборку мусора, независимо от того, скомпилирован ли он в собственный код или интерпретирован.

3 голосов
/ 06 мая 2009

Для фактической реализации на скомпилированном языке, в данном случае C и / или C ++, см. Boehm GC на http://www.hpl.hp.com/personal/Hans_Boehm/gc/

2 голосов
/ 06 мая 2009

Новый C ++ 0x включает в себя функции, облегчающие реализацию сборки мусора. См. Например, интервью .

0 голосов
/ 06 мая 2009

Objective-C 2 теперь имеет сборку мусора, и для C ++ также доступны библиотеки сбора мусора.

Я думаю, что это возможно, пока он существует, язык позволяет вам проверять объекты, чтобы вы могли пройти по дереву объектов.

0 голосов
/ 06 мая 2009

Да.

C ++ с реализацией интеллектуального указателя будет собирать мусор, когда счетчик ссылок интеллектуального указателя стремится к нулю.

У вас есть сборка мусора. Вы не строили это сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...