Вопрос, связанный с соображениями производительности для String.substring. До Java 1.7.0_06 метод String.substring() возвратил новый объект String, который поделился с тем же базовым массивом char, что и его родители, но с разными смещениями и длиной. Чтобы избежать хранения очень большой строки в памяти, когда требуется только небольшая подстрока, программисты использовали для написания кода следующим образом:
s = new String(queryReturningHugeHugeString().substring(0,3));
Начиная с версии 1.7.0_06, нет необходимости создавать новый String, потому что в реализации Oracle String подстроки больше не разделяют свой базовый массив char.
Мой вопрос: можем ли мы полагаться на Oracle (и другие вендоры), не возвращаясь к char[] совместному использованию в какой-то будущей версии, и просто делаем s = s.substr(...), или мы должны явно создавать новую строку на всякий случай релиз JRE снова начинается с реализации совместного использования?