I recently learned about scenarios which require warming up an app (with high throughput requirement) before they start serving real requests. The logic behind this was to allow JIT to do its performance magic!
Is this a norm for Java apps or is this generally done for memory heavy (footprint) apps?
If you are talking about a high traffic webapp/website then JIT is a very minor issue. The biggest problem is warming up (populating) all the cache layers you’ll need to have. E.g ehcache regions which are being populated from hibernate. That’s because IO related operations are orders of magnitude slower than anything that happens inside the CPU (that is unless you are calculating fractals 🙂