If we want low pause times and a smaller footprint then throughput will be lower. In this case, we have a lot of individual pauses that are very short. The pause time is split into smaller chunks, so it will go unnoticed.
The JVM manages these considerations for us. First, it tries to achieve low latency (that is, low pause times). If it achieves that, it next aims for throughput and more time spent serving requests. The JVM will increase the heap to the maximum specified in order to achieve high throughput.