A field guide is a book designed to help identify birds, spiders, or
other animals while on a nature walk. Typically, these books are
very concise as you don’t want to bring a five volume encyclopaedia
to your bushwalk. They only contain the necessary details while
leaving out less important information.
This article is the first chapter of an attempt to create such a
guide for running and supporting JVM applications. A guide that is
concise only contains the necessary information, and can be used to
find a solution when encountering a problem in the field. As with
animal kingdoms, there are five fundamental resources that can
affect JVMs runtime: Memory, CPU, Disk IO, Network, and thread
synchronisation.
This article focuses on the first one – memory. Memory is an
extensive topic. There could be books written on how JVM
applications use memory, and it’s impossible for a single article to
cover the whole story. Instead, the guide focuses on the most
practical aspects of dealing with JVM applications, primarily
server-side ones, and provides plenty of references for those who’d
like to dive deeper.