How can I free memory allocated by Rust code exposed in WebAssembly?

后端 未结 2 2023
温柔的废话
温柔的废话 2021-02-19 08:09

I have a web application written in Rust and wasm-bindgen that needs to store state. The state is stored like this:

lazy_static! {
    static ref ID_TO_DATA: Mut         


        
2条回答
  •  隐瞒了意图╮
    2021-02-19 08:48

    My visitors spend hours on my website without reloading it.

    My wasm program runs once every 5 minutes, for 0.5 seconds each time. It is called by a synchronous JS function, which expects the output right after the wasm finishes. During the execution, the wasm program needs 700 MB of RAM.

    I would like to release these 700 MB when the wasm program does not run. What JS object should I release (remove references to)? Next time my JS function runs, I want to run the wasm program again (in a synchronous way).

    I was thinking about recompiling WASM each time my JS function runs, but all current browsers compine WASM asynchronously. Is there anything else I can do?

    These lines do nothing:

    wasm.instance.exports.memory.buffer = new ArrayBuffer(10);
    wasm.instance.exports.memory = new WebAssembly.Memory({initial:10});
    

提交回复
热议问题