I am actually surprised the dumper paradigm doesn't get more love. Startup time is an issue for most large programs. The dumper route is a generally applicable way to drastically improve startup time. Think of it as splitting your code into two parts: setup phase which is run at compile time (i.e. pre-dump) and run phase which runs at run time. Undumping substitutes a simple load of a file for the setup phase. What is not to love?
At one point Borland C++ precompiled header files used this approach: dump the in-memory object graph for the header file whole. Makes more sense than for a whole executable.
The complexity of that solution. By nature it is very fragile and leads to nasty bugs. But I can see certainly see the benefit of this approach - would be interesting to see this applied to some big frameworks/VMs, such as Java or .NET.
I've read something about dumping JVM state to decrease Clojure startup time (don't recall the details and I'm on mobile right now to check), so if I'm not wrong it was tried before...