I was playing around with jmap
and found that simple \"Hello World\" Java program creates thousands of objects. Here is truncated list of objects Oracle JVM
You can find the answer yourself by running the application with -XX:+TraceBytecodes
flag.
This flag is available in debug builds of HotSpot JVM.
Here is the detailed Flame Graph (clickable SVG) showing the stack traces where the allocated objects come from.
In my case the main sources of start-up allocations were
P.S. The script used to generate the Flame Graph from TraceBytecodes output.