Big thumbs up to the Landmark Histories project (http://thelandmarkancienthistories.com/). Excellent production value making reading these histories much more managable -- you're 100% right on the frequent maps and good appendixes.
Would also be interesting to see if this is a Java issue, or a JVM implementation issue: ie, does an OpenJ9 based JVM (Available under the weird IBM Semeru name here [1]) have similar behaviour?
What you're looking at is allocation of multiple apps inside of nodes in a cluster. With a JIT Server in each node, the memory required for each instance of the app is reduced, such that the effect is more instances can be fit in the same node size than before.
It reminds me of "bonuses" on equipment in RPGs. You lose 1 equipment slot to have it taken up by the item, but in return the rest of your equipment gets a bonus that more than makes up for the slot you can't use now.
The problem is that requires a closed world approach, or constrained usage of reflection.
Yes there have been AOT compilers since around 2000, however you will notice that they target specific deployment cases, and also offer JIT caches in alternative.
Actually that is also how Android rebooted their AOT efforts in version 7.
You can see it in GraalVM and native image as well.
Yeah, I posted a blog post [1] that explains my motivation in curating this list. Seeing the broad range of companies that do this kind of work was really helpful early in my career.
I think it's possible to join the compilers field with no previous experience if you can find the right team willing to mentor. Best would be for you to have adjacent skills that are valuable to the team; things like domain expertise, low level programming skill, or hardware knowledge.
Everyone starts somewhere. It's not the easiest thing, but I think can be done.
reply