Class ChunkReader


  • public final class ChunkReader
    extends java.lang.Object
    Provides an efficient means to read JFR data, chunk by chunk. The actual method employed will depend on whether the JFR file is available as a stream or as a file, and whether or not the data is compressed or not.

    Each chunk will be self-contained and parsable, for example by wrapping it in a ByteArrayInputStream and using the JfrLoaderToolkit.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ChunkReader()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void main​(java.lang.String[] args)
      Program for listing the number of chunks in a recording.
      static java.util.Iterator<byte[]> readChunks​(java.io.File jfrFile)
      Reads a JFR file, chunk by chunk.
      static java.util.Iterator<byte[]> readChunks​(java.io.InputStream jfrStream)
      Reads a JFR file, chunk by chunk, from a stream.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • JFR_MAGIC_BYTES

        private static final byte[] JFR_MAGIC_BYTES
      • JFR_MAGIC

        private static final int[] JFR_MAGIC
      • ZIP_MAGIC

        private static final int[] ZIP_MAGIC
      • GZ_MAGIC

        private static final int[] GZ_MAGIC
    • Constructor Detail

      • ChunkReader

        private ChunkReader()
    • Method Detail

      • readChunks

        public static java.util.Iterator<byte[]> readChunks​(java.io.File jfrFile)
                                                     throws java.io.IOException
        Reads a JFR file, chunk by chunk.

        Each chunk will be self contained and parsable, for example by wrapping it in a ByteArrayInputStream. Note that Iterator.next() can throw IllegalArgumentException if it encounters a corrupted chunk.

        Parameters:
        jfrFile - the file to read binary data from
        Returns:
        returns an iterator over byte arrays, where each byte array is a self containing jfr chunk
        Throws:
        java.io.IOException
      • readChunks

        public static java.util.Iterator<byte[]> readChunks​(java.io.InputStream jfrStream)
                                                     throws java.io.IOException
        Reads a JFR file, chunk by chunk, from a stream.

        Each chunk will be self contained and parsable, for example by wrapping it in a ByteArrayInputStream. Note that Iterator.next() can throw IllegalArgumentException if it encounters a corrupted chunk.

        Parameters:
        jfrStream - the stream to read binary data from
        Returns:
        returns an iterator over byte arrays, where each byte array is a self containing JFR chunk
        Throws:
        java.io.IOException
      • main

        public static void main​(java.lang.String[] args)
                         throws java.io.IOException
        Program for listing the number of chunks in a recording.
        Parameters:
        args - takes one argument, which must be the path to a recording
        Throws:
        java.io.IOException - if there was a problem reading the file