As with all performance issues, a magic bullet rarely appears.
Pressure in memory - the application starts, but a heap of 512 m in size is only enough to fit the applications, and spends half the time the GC starts.
Look at one of the following: 1. -verbose: gc 2. jstat -gcutil 2. jvisualvm - a much nicer interface
You are trying to see how much time is spent on the GC, look for many complete garbage collection events that do not return most of the heap, i.e. 99% → 95%.
The solution is more heap, and nothing more for him really.
You might want to try -XX: + AggressiveHeap to get the JVM to use the maximum memory in the box, only the problem is only 1 GB of memory, which will be limited. List all JVM parameters
Disk IO - the box itself does not start at 100% CPU during startup (assuming that 100% of one core, the launch is usually single-threaded), then there may be some IO disk that the application does this is the throat of the bottle.
Use operating system tools, such as the Windows Performance Monitor, to test disk I / O. Perhaps this is not an application, as a result of which the IO may be a swap operation (page error)
Solution: either fix the application (not likely), or get a faster disk / computer or more physical memory for the window
source share