There are a huge number of articles and diagrams on this topic on the Internet, however, in my opinion, none of them allows you to form a general idea of the memory use in the Java process. And without a general understanding, it is difficult to find solutions to specific memory problems in complex systems. As a result, I decided to post my diagrams.

Simplified diagram of Java memory usage of a process:

Detailed diagram of Java memory usage of a process by some parameters:

List of JVM parameters for Copy Paste

A short list of diagnostic tools

These diagrams are not intended to provide complete knowledge, but they can be a starting point in exploring the topic deeper, filling knowledge gaps, tuning the JVM, and finding the problem in the current system.