Javascript, Java, C#, Golang, Python, Ruby: all garbage collected. Aside from C/C++, those are the languages of modern software dev.
Yeah you could arena allocate and do some nonstandard techniques like that, but basically you are at the mercy of a garbage collector, and those LOVE to use memory.
So... use C++? use Rust? As you point out, malloc and the heap are kinda the same problem as GC.
Personally, some "runs on 1Ghz and 256MB of RAM" would probably be the most real world effective way to advertise some degree of restraint.
We can't keep wasting processing power, the "laws" are running out of steam. MHz/Ghz is stalled for a decade, and the die shrinks are going to start running out of steam as well.
I can't think the coming AI coding blast will help things either.
We also lack stability and sharing in the runtime libraries (and containers are NOT helping this, they just load all their own mini-OSes for each application), and efficient means of extracting only the necessary routines from big libraries in build processes.