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.

  • Ephera
    link
    fedilink
    arrow-up
    3
    ·
    3 months ago

    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)…

    • leisesprecher@feddit.orgOP
      link
      fedilink
      arrow-up
      7
      ·
      3 months ago

      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.

      • Luis Norambuena@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        3 months ago

        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!