> When `LineBreakMeasurer` is used to break text into lines, internally it uses > `TextMeasurer` and `TextLine` to do the job. In the common case, > `TextLine.getComponents(...)` allocates a `TextLineComponent[]` with room for > a single array entry, and passes it to `TextLine.createComponentsOnRun(...)`, > which fills the array and returns it, optionally resizing to a larger array > if necessary, after which the array is resized back down to actual size (if > necessary). > > Unfortunately `TextLine.createComponentsOnRun(...)` is too eager in > allocating larger arrays. In the most common case of a single component, this > means that a single-element array is allocated, then a 9-element array is > allocated (via `expandArray(...)`), and then another single-element array is > allocated (to shrink the array back to actual size). Only one array > allocation is necessary in this common case, and no array copying is needed.
Daniel Gredler has updated the pull request incrementally with one additional commit since the last revision: Update copyright year ------------- Changes: - all: https://git.openjdk.org/jdk/pull/22288/files - new: https://git.openjdk.org/jdk/pull/22288/files/4ca6782f..557a3b18 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=22288&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22288&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/22288.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22288/head:pull/22288 PR: https://git.openjdk.org/jdk/pull/22288
