I have a small homelab running a few services, some written by myself for small tasks - so the load is basically just me a few times a day.
Now, I’m a Java developer during the day, so I’m relatively productive with it and used some of these apps as learning opportunities (balls to my own wall overengineering to try out a new framework or something).
Problem is, each app uses something like 200mb of memory while doing next to nothing. That seems excessive. Native images dropped that to ~70mb, but that needs a bunch of resources to build.
So my question is, what is you go-to for such cases?
My current candidates are Python/FastAPI, Rust and Elixir, but I’m open for anything at this point - even if it’s just for learning new languages.
Hmm, I’ve never looked too much at benchmarks for this, but is there reason to believe Python would use less memory for a similarly complex project? It still needs a runtime, and it has to do a larger interpretation step at runtime (i.e. it needs to start from human-readable code rather than from bytecode)…
Python caches bytecode, so the translation happens only once.
Java loads everything immediately and keeps it in memory. All beans, all connections, etc. That takes up a ton of memory.
Python / FastAPI will be better than Java in your situation and is easy to learn. Go should be even better and is also relatively easy to learn!