RFR: 8368825: Change the DateTimeFormatterBuilder::FIELD_MAP type from Map to Array

Shaojin Wen swen at openjdk.org
Mon Sep 29 01:12:11 UTC 2025


The DateTimeFormatterBuilder::FIELD_MAP is of type Map<Character, TemporalField>, with key values in the range 'A-Z' and 'a-z'.

We can change the type of FIELD_MAP to an array of length 128 and then use char as an index to access the array.

This will reduce the memory usage of DateTimeFormatterBuilder::FIELD_MAP and improve performance slightly.

By analyzing the jmap dump memory, we can see that the memory size used by DateTimeFormatterBuilder::FIELD_MAP has dropped from 1.12kb to 528b, the number of objects has decreased and the memory has become more flat. as shown below:
* before
<img width="2018" height="1016" alt="image" src="https://github.com/user-attachments/assets/57d4c513-55c7-472e-95a8-9f7a4b47662d" />

* after
<img width="1894" height="352" alt="image" src="https://github.com/user-attachments/assets/89cbfb6c-360a-475f-85ea-4365d3b66871" />

-------------

Commit messages:
 - @Stable FIELD_MAP

Changes: https://git.openjdk.org/jdk/pull/26634/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26634&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8368825
  Stats: 29 lines in 1 file changed: 2 ins; 0 del; 27 mod
  Patch: https://git.openjdk.org/jdk/pull/26634.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26634/head:pull/26634

PR: https://git.openjdk.org/jdk/pull/26634


More information about the core-libs-dev mailing list