-
Bug
-
Resolution: Fixed
-
P3
-
8
I noticed recently that the 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))) {
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))) {
- duplicates
-
JDK-8026198 Slow reading of tzdb on remove filesystems
-
- Closed
-