Какие альтернативы для Hans Boehm GC существуют для небольших устройств?

Я хотел бы использовать виртуальную машину, например NekoVM, в небольшом устройстве, но для ее создания требуется пакет Boehm GC, однако для этого небольшого устройства нет порта этого GC, поэтому мне было интересно, есть ли какая-либо альтернатива это что-то, что можно сделать исключительно с помощью кода C?

Ответ 1

Я бы сказал, что наилучшим вариантом будет перенос GC на вашу платформу, для которой есть инструкции (инструкции по переносу libgc).

Кроме того, должно быть возможно поменять реализацию GC (Часто задаваемые вопросы NekoVM), см. файл vm/alloc.c.

ИЗМЕНИТЬ

Надеемся, полезные полезные ссылки: (untested)

Ответ 2

Возможно, вам будет лучше с Lua, который имеет очень маленькую, но мощную виртуальную машину, имеет свой сборщик мусора встроен и работает на любой платформе, поддерживающей стандарт ANSI C. С небольшими усилиями вы даже можете построить Lua на машине, которая не имеет стандартного ввода и стандартного вывода. Я видел, что Lua работает на встроенном устройстве, которое было маленьким ЖК-сенсорным экраном со встроенным процессором, вставленным сзади. Neko - хорошая работа, но я думаю, что вы найдете Lua каждый бит как удовлетворяющий.

Ответ 3

Я мог бы предложить TinyGC (tinygc.sf.net) - независимую облегченную реализацию BoehmGC с таргетингом на небольшие устройства. Он полностью совместим с API (даже больше, совместим с бинарными) с BoehmGC v7 +, но реализован только небольшой подмножество API (но достаточный для управления памятью на основе Java/GCJ), и нет автоматической регистрации потоков потоков и статических данных. Последнее, однако, может потребовать некоторых усилий, чтобы заставить NekoVM работать с ним (т.е. Вызвать GC_register_my_thread() и GC_add_roots()).

Ответ 4

Для поддержки этого есть презентация VMKit (LLVM), где они показывают Boehm GC как вероятное узкое место для производительности.

Ответ 5

Мой совет - написать точный GC для Neko, если он еще не существует. Я бы не стал прикасаться к Boehm GC с полюсом баржи...