Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8026198

Slow reading of tzdb on remove filesystems

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • None
    • core-libs
    • None
    • 8

      Tthe JDK8 JVM was very slow starting on systems where the JRE is on a high-latency, remote file system. I tracked this down to the reading of tzdb.dat. In java/time/zone/TzdbZoneRulesProvider.java and sun/util/calendar/ZoneInfoFile.java the tzdb.dat file is read using a DataInputStream directly over a FileInputStream. Consequently there ends up being a large number of very small (often a single byte) read requests to the underlying O/S file system. This can be fixed trivially by adding a BufferedInputStream between the DataInputStream and the FileInputStream.

      Thus this:
        try (DataInputStream dis = new DataInputStream(
                 new FileInputStream(new File(libDir, "tzdb.dat")))) {
      becomes:
        try (DataInputStream dis = new DataInputStream(
            new BufferedInputStream(
                 new FileInputStream(new File(libDir, "tzdb.dat")), 32000))) {

            Unassigned Unassigned
            rriggs Roger Riggs
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: