我正在尝试配置一个轻量级的全功能 JavaScript 引擎,以便我可以同时拥有数万个独立的上下文。每个上下文所做的事情很少(主要是事件处理、轻字符串操作、自定义计时器等),并且不需要太多堆存储,但需要独立于其他上下文。使用 Duktape,如果我在 x64 中分配 20,000 个上下文,在进行大量处理之前我会使用超过 1.6GB 的内存,或者每个大约 80KB。作为另一个数据点,如果我使用 SpiderMonkey 1.7.0,20,000 运行我大约 1.4GB 或大约 70KB ......几乎相同。我已经使用了 Duktape 必须提供的一些优化,但它似乎不会影响这种用法。
所以问题是,有没有办法将每个上下文的内存利用率降低到每个上下文的 4KB(或更少)范围?
注意:是的,我知道 SpiderMonkey 1.7.0 并不是真正的全功能,但它是为了我正在尝试做的事情,并且没有我不想要也不需要的 JIT 复杂性来自后来的引擎、V8 等。因此,将 Duktape 视为替代方案。
谢谢!