При внедрении переводчика это хорошее или плохо, чтобы контрагироваться от сборщика мусора размещения хоста?

StackOverflow https://stackoverflow.com/questions/2179501

Вопрос

Допустим, вы реализуете интерпретатор для GECED язык на языке, который GECED. Мне кажется, что вы получите сборку мусора бесплатно, если вы достаточно осторожно о вашем дизайне.

Это вообще как это сделано? Есть ли веские причины не делать этого?

Это было полезно?

Решение

Язык и время выполнения - это две разные вещи. Они не совсем связаны с ИМХО.

Следовательно, если ваше существующее время выполнения предлагает GC уже, должна быть веская причина продлить время выполнения с другим GC. В старые добрые времена, когда распределения памяти в ОС были медленными и дорогими, приложения привели свои собственные менеджеры кучи, которые, где более эффективны для борьбы с небольшими кусками данных. Это был один readon для добавления другого управления памятью на существующее время выполнения (или ОС). Но если вы говорите Java, .NET или около того - это должно быть достаточно хорошо и эффективно для большинства задач под рукой.

Тем не менее, вы можете создать правильный интерфейс / API для задач управления памятью и объектами (и других), чтобы ваш язык («гость») время выполнения может быть реализован на другой во время выполнения хоста.

Другие советы

Для интерпретатора не должно быть проблем с использованием Host GC, ИМХО, особенно сначала. Как всегда, они должны делать что-то работать, а затем заставить его работать правильно, а затем сделать его быстро. Это особенно верно для конкретных языков домена (DSL), где целью является небольшим языком. Для этого, реализация полного GC была бы излишним.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top