I have done a little test to find out if I could run some microservices with async code in memory constrained devices. Here is the test code:
[https://gist.github.com/aguspiza/80e34b5cf65aa3bbfd19c7339ee9b695](https://gist.github.com/aguspiza/80e34b5cf65aa3bbfd19c7339ee9b695) That test uses 5x more memory with 0.18.0 than with 0.17.2 (or any previous version at least with boehm gc) Here you have some numbers: Linux x64 0.17.2 boehm 24MB used (release 14MB) Linux x64 0.18.0 boehm 94MB used (release 84MB) other gc's have similar increases +40MB: 0.17.2 default gc 70MB (release 30-36MB) 0.18.0 default gc 146MB (release 110MB) similar result with gc:v2 146MB (release 110MB) I am getting those numbers from RSS column on "ps" $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 13946 38.9 0.0 18024 15136 pts/0 Sl+ 11:55 0:22 ./httpasync Is this a known issue? Is this expected from latest gc optimization (TLSF algorithm) in 0.18.0? Why is there so much difference between gc's? Should I use boehm, markandsweep, v2 or default gc? Boehm is giving the best results but Araq told me (at IRC) that it is not using Nim's memory allocator ?!?!