title: Why does a GraalVM (SubstrateVM) native image uses so much less memory at runtime than a corresponding JIT build?
body: <p>I'm wondering why a GraalVM (SubstrateVM) native image of a Java application makes it run where the runtime behavior will consume much less memory, yet if run normally, it will consume a lot more memory?</p>
  
  <p>And why can't the normal JIT be made to similarly consume a small amount of memory?</p>