memory management #21
Description
I'm using deepspeech-rs in a personal project and I've run into a memory-related problem.
At a high level, I have an Actix server that accepts audio files (currently from a watchOS client) uses deepspeech-rs to convert the audio to text, then returns the result. The problem I'm seeing is memory grows by ~250MB each time I process an audio file.
I suspect the problem is that I'm loading the model into memory each time I process a new audio file. However, in trying to solve this I've run into two problems:
- I don't understand how to properly free the memory after loading the model -- I'm used to Rust doing this for me, and trying to clear the Model and/or Audio Buffer doesn't solve the leak
- I'd prefer to load the models one time, and then share it with all the Actix threads -- however, I'm unable to wrap it in a Mutex and share it, as deepspeech::Model doesn't implement Copy() or Clone().
I do see there was recent discussion of a memory leak in the upstream deepspeech repo, but offhand that doesn't look related.
I'm currently doing development on an Ubuntu-based Linux distribution, with the 5.3 Linux kernel. I set things up and build as documented in my project's README.
I'd appreciate any suggestions!