我想将像NekoVM这样的虚拟机用于小型设备,但要构建它,它需要Boehm GC,但是那个小型设备没有该GC的端口,所以我想知道是否有任何替代方案它,可以用C代码专门完成的东西吗?
答案 0 :(得分:4)
我认为您最好的选择是将GC移植到您的平台,其中有说明(libgc porting instructions)。
此外,应该可以交换GC实现(NekoVM FAQ),请参阅vm / alloc.c文件。
修改强>:
希望有用的附加链接:(未经测试)
答案 1 :(得分:3)
也许你会更好地使用Lua,它有一个非常小但功能强大的虚拟机,内置自己的垃圾收集器,并可在任何支持ANSI标准C的平台上运行。只需一点点你甚至可以在缺乏标准输入和标准输出的机器上构建Lua。我看到Lua在一个small LCD touch screen with an embedded CPU stuck on the back的嵌入式设备上运行。 Neko是一个很好的工作,但我认为你会发现Lua一点都令人满意。
答案 2 :(得分:3)
我可以推荐TinyGC(tinygc.sf.net) - 一个针对小型设备的BoehmGC的独立轻量级实现。它与BoehmGC v7 +完全API兼容(甚至更多,二进制兼容),但只实现了API的一小部分(但足以用于类似Java / GCJ的内存管理),并且没有自动线程和静态数据根注册。但是,后者可能需要一些努力才能使NekoVM使用它(即调用GC_register_my_thread()和GC_add_roots())。
答案 3 :(得分:2)
为了支持这一点,有一个VMKit(LLVM)演示文稿,它们将Boehm GC显示为probable bottleneck以提高性能。
答案 4 :(得分:1)
我的建议是为Neko写一个准确的GC,如果还不存在的话。我不会用驳船杆触摸Boehm的GC ......