A regression is found in Java9+ creating String instance from UTF8 bytes, a 
side effect of string compactation https://openjdk.org/jeps/254 that changed 
the decoding logic. Specifically, when constructing a string from bytes: 

``` 
String str = new String(largeBytes, StandardCharsets.UTF_8); 
``` 

if the size of largeBytes is greater than 2^30 (>1 GB) but smaller than INT_MAX 
(2 GB), it fails on Java9+ (including 11, 17, 21, though the stack trace is 
slightly different, see below), regardless of jvm heap size. In Java8, it 
succeeded when jvm heap size is set to be sufficient.

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

Commit messages:
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/16974/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16974&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8320570
  Stats: 79 lines in 2 files changed: 72 ins; 0 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/16974.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16974/head:pull/16974

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

Reply via email to