Using memory buffers for holding trace data is an efficient method of running trace. The reason is that no file I/O is performed until a problem is detected or until the buffer content is intentionally stored in a file.
Buffers are allocated on a per-thread principle. This principle removes contention between threads, and prevents trace data for an individual thread from being mixed in with trace data from other threads. For example, if one particular thread is not being dispatched, its trace information is still available when the buffers are dumped or snapped. Use the -Xtrace:buffers=<size> option to control the size of the buffer allocated to each thread.
The resulting snap trace file is placed into the current working directory, with a name in the format Snapnnnn.yyyymmdd.hhmmssth.process.trc, where nnnn is a sequence number reset to 0001 at JVM startup, yyyymmdd is the current date, hhmmssth is the current time, and process is the process identifier. This file is in a binary format, and requires the use of the supplied trace formatter so that you can read it.
You can use the -Xdump:snap option to vary the events that cause a snap trace file to be produced.