При внедрении переводчика это хорошее или плохо, чтобы контрагироваться от сборщика мусора размещения хоста?
-
24-09-2019 - |
Вопрос
Допустим, вы реализуете интерпретатор для GECED язык на языке, который GECED. Мне кажется, что вы получите сборку мусора бесплатно, если вы достаточно осторожно о вашем дизайне.
Это вообще как это сделано? Есть ли веские причины не делать этого?
Решение
Язык и время выполнения - это две разные вещи. Они не совсем связаны с ИМХО.
Следовательно, если ваше существующее время выполнения предлагает GC уже, должна быть веская причина продлить время выполнения с другим GC. В старые добрые времена, когда распределения памяти в ОС были медленными и дорогими, приложения привели свои собственные менеджеры кучи, которые, где более эффективны для борьбы с небольшими кусками данных. Это был один readon для добавления другого управления памятью на существующее время выполнения (или ОС). Но если вы говорите Java, .NET или около того - это должно быть достаточно хорошо и эффективно для большинства задач под рукой.
Тем не менее, вы можете создать правильный интерфейс / API для задач управления памятью и объектами (и других), чтобы ваш язык («гость») время выполнения может быть реализован на другой во время выполнения хоста.
Другие советы
Для интерпретатора не должно быть проблем с использованием Host GC, ИМХО, особенно сначала. Как всегда, они должны делать что-то работать, а затем заставить его работать правильно, а затем сделать его быстро. Это особенно верно для конкретных языков домена (DSL), где целью является небольшим языком. Для этого, реализация полного GC была бы излишним.