Comparison of Erlang Runtime System and Java Virtual Machine [pdf]
ds.cs.ut.ee
ds.cs.ut.ee
Also, JDK 11 (Hotspot) comes with a new concurrent non-generational garbage collector (ZGC) [3] that has an average pause time of 1 ms [4]. It is still an experimental feature, but that will most likely change over time.
[1] http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.htm...
[2] http://openjdk.java.net/projects/loom/
That's a great quote(citation is in the paper), I'll have to remember it for future use.
For BEAMJIT, I can imagine that the same work will take a different number of reductions before and after the JIT compiler has modified the code. Are there going to be any scheduling issues that will arise because of these reduction changes (or any other aspects of the JIT compiler)?
Speedup in runtime, slowdown on startup. Early versions of Android (before 2.2 i.e. before 2010) used Dalvik JVM that interpreted the byte code.
BTW, apparently google still can’t decide what’s the best way. After couple of years, in 2013-14, Google threw away the JIT and introduced another JVM, with AOT compilation instead of JIT.
After another couple of years, in 2016, Google re-introduced JIT to the new JVM while keeping the AOT. It’s complicated but AFAIK they work together on modern Android.
When Microsoft introduced AOT compilation from Singularity into Windows 8, the compilation was done at the store, with dynamic linking done on-device.
Windows 10 UWP brought full static compilation on the store via .NET Native.
Google instead decided to do AOT compilation on the devices, which meant users had to wait several minutes, or even hours after major updates took place.
So with 7.0 they backtracked, using a quick interpreter written in Assembly, followed with a JIT doing PGO, which then took the overall information to feed into the AOT compiler, only called when the device is resting.
Updates trigger the process from the beginning.
Now with P, they will be sending PGO metada back to the store and share it between devices at installation time.
Yet, WP devices with AOT compilation at the store always felt faster as comparable Android class models.
JVM is getting Fibers , Non Mutable Array (which would prevent from race condition) and other important upgrade to make the VM safer and faster.
Obviously this will take years before being ready.
Direct support would be more efficient but because of Java's heavy JIT'ing you can get near native performance now
Perhaps jvm is still a better purpose tool due to this.
Since everything's immutable, from the programmer's point of view the behaviour is identical to if it was copied, so the sharing is an implementation detail that doesn't affect the semantics.