The microservice reports the startup time by measuring the time between the main
method entry, and the callback notification when the HTTP server has started.
We can do a few runs of java -jar build/libs/openj9-howto-all.jar
and pick the best time.
On my machine the best I got was 311ms.
OpenJ9 offers both an ahead-of-time compiler and a class data shared cache for improving startup time as well as reducing memory consumption.
The first run is typical costly, but then all subsequent runs will benefit from the caches, which are also regularly updated.
The relevant OpenJ9 flags are the following:
-
-Xshareclasses
: enable class sharing
-
-Xshareclasses:name=NAME
: a name for the cache, typically one per-application
-
-Xshareclasses:cacheDir=DIR
: a folder for storing the cache files
Let us have a few run of:
$ java -Xshareclasses -Xshareclasses:name=sum -Xshareclasses:cacheDir=_cache -jar build/libs/openj9-howto-all.jar
On my machine the first run takes 457ms, which is "much" more than 311ms!
However, the next runs are all near 130ms, with the best score of 112ms which is very good for a JVM application start time.