Hello all;

For a long time preparations and planing have been underway to remove the 
offset and count fields from java.lang.String. These two fields enable multiple 
String instances to share the same backing character buffer. Shared character 
buffers were an important optimization for old benchmarks but with current real 
world code and benchmarks it's actually better to not share backing buffers. 
Shared char array backing buffers only "win" with very heavy use of 
String.substring. The negatively impacted situations can include parsers and 
compilers however current testing shows that overall this change is beneficial.

The current plan is to commit this change to jdk8 before build 40 followed by 
jdk7u6. Removing offset/count is a complicated process because HotSpot has 
special case code for String that depends upon the two fields. Vladimir Kozlov 
has committed the required HotSpot changes already 
(http://hg.openjdk.java.net/jdk8/jdk8/hotspot/rev/8f972594effc).

A patch of the changes to java.lang.String for JDK 8 are at 
<http://cr.openjdk.java.net/~mduigou/6924259/0/webrev/>. The changes for JDK 7 
have only superficial differences (line offsets in the patch).

Comments are welcome.

Mike

Reply via email to