Will you get any performance improvement if you manage memory yourself? - http://mentablog.soliveirajr.com/2012/11/which-one-is-faster-java-heap-or-native-memory/ More heap, GC will get slower - http://plumbr.eu/blog/increasing-heap-size-beware-of-the-cobra-effect Collection of tools to analysis GC activities - http://www.fasterj.com/tools/gcloganalysers.shtml Another presentation of performance hint for hotspot or memory - http://www.infoq.com/presentations/Extreme-Performance-Java Show how to enable and analyze the verbose:gc out data - http://javaeesupportpatterns.blogspot.com.au/2013/01/java-verbose-gc-tutorial-video.html Discussion and comparison of difference GC at Java 1.7 - http://mechanical-sympathy.blogspot.com.au/2013/07/java-garbage-collection-distilled.html . And here is the detail experiment among those difference GC, look like G1 is quite promising - http://java-is-the-new-c.blogspot.com.au/2013/07/tuning-and-benchmarking-java-7s-garbage.html Memory is not allocate to single block, thus even you allocate enough memory in term of size, it may not enough to held individual object - https://plumbr.eu/blog/outofmemoryerror-on-overprovisioned-heap Introduction to metaspace - http://www.infoq.com/articles/Java-PERMGEN-Removed http://vanillajava.blogspot.com.au/2014/08/try-optimising-memory-consumption-first.html Some comments about System.gc() - http://jeremymanson.blogspot.com/2015/12/why-i-dont-like-systemgc.html http://blog.takipi.com/5-tips-for-reducing-your-java-garbage-collection-overhead Logging stop-the-world pauses in JVM - https://plumbr.eu/blog/performance-blog/logging-stop-the-world-pauses-in-jvm Why we should put difference app in same VM - http://mydailyjava.blogspot.hk/2016/10/generational-disparity-in-garbage.html Atlassian GC tuning guide - https://confluence.atlassian.com/enterprise/garbage-collection-gc-tuning-guide-461504616.html Using jemalloc to get to the bottom of a memory leak - https://gdstechnology.blog.gov.uk/2015/12/11/using-jemalloc-to-get-to-the-bottom-of-a-memory-leak/ Troubleshooting-Java-Memory-Issues - https://www.infoq.com/articles/Troubleshooting-Java-Memory-Issues Useful parameters for OOME - https://jaxenter.com/jvm-outofmemoryerror-161257.html Why Java's TLABs are so important and why write contention is a performance killer in multicore environments - https://www.opsian.com/blog/jvm-tlabs-important-multicore/ MMU gang wars: the TLB drive-by shootdown - http://bitcharmer.blogspot.com/2020/05/t_84.html Latency implications of virtual memory - https://rigtorp.se/virtual-memory/ foreign-memaccess - http://cr.openjdk.java.net/~mcimadamore/panama/foreign-memaccess.html Detect proactively whether application’s memory is under-allocated - https://jaxenter.com/memory-under-allocated-176329.html Panama: Not-so-Foreign Memory. Using MemorySegment as a high-performance ByteBuffer replacement without a 2GB limit. - https://gavinray97.github.io/blog/panama-not-so-foreign-memory https://www.reddit.com/r/java/comments/x54aad/panama_notsoforeign_memory_using_memorysegment_as/ What’s the deal with humongous objects in Java? - https://devblogs.microsoft.com/java/whats-the-deal-with-humongous-objects-in-java Netflix on Java: How to build a 1TB Non-Heap, ultra-efficient application for video streaming - an example - https://dac.digital/netflix-on-java-a-non-heap-application-for-video-streaming/