I am new to jstat tool. Therefore I did a sample as below.
./jstat -gcutil -t 4001 5000
Timestamp S0 S1 E O P YGC YGCT FGC
See the documentation:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
Basically one row is one point in time. The columns show data about the JVM memory areas (Survivor, Eden, ...), understanding them is impossible without knowing how the JVM works.
For example in the article JVM garbage collection in young generation there is some explanation.
Here is the excerpt how JVM object generation works:
Eden
is a place where new objects created. When the Eden is full, a small GC
is run: if an object has no reference to it, it will be deleted, otherwise it will survive, and move to the Survivor
space (only one of the survivor spaces in use at a time, all objects from the other space is copied there).
If an object survives a certain number of back-and-forth copying, it is moved to Old
space. If the Old space is full, a Full GC
is run, which affects all objects in the JVM, so it is much heavier operation.
Also, there is the Permanent
space, where the "metadata" (class descriptors, field, method, ... descriptors) are stored.