http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html
http://www.baeldung.com/jvm-parameters
https://plumbr.io/outofmemoryerror/permgen-space
https://blogs.oracle.com/poonam/about-g1-garbage-collector,-permanent-generation-and-metaspace
-XX:+UseG1GC
Enables the use of the garbage-first (G1) garbage collector. It is a server-style garbage collector, targeted for multiprocessor machines with a large amount of RAM. It meets GC pause time goals with high probability, while maintaining good throughput. The G1 collector is recommended for applications requiring large heaps (sizes of around 6 GB or larger) with limited GC latency requirements (stable and predictable pause time below 0.5 seconds).ref:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html
http://blog.sokolenko.me/2014/11/javavm-options-production.html
https://dzone.com/articles/g1-vs-cms-vs-parallel-gc
https://plumbr.io/outofmemoryerror/java-heap-space
https://dzone.com/articles/java-8-permgen-metaspace
https://dzone.com/articles/jvm-architecture-explained
http://www.baeldung.com/java-memory-management-interview-questions
https://www.journaldev.com/2856/java-jvm-memory-model-memory-management-in-java
https://dzone.com/articles/java-performance-tuning