Сегодня обнаружил, что из 8-ки в 1.7.0_07 перетащили измемение структуры private полей класса java.lang.String.
Больше нет полей offset и length, и появился новый hash32 (с другим алгоритмом хеширования).
По сути, это изменение означает, что String.substring / Pattern.split больше не будут шарить оригинальную строку ( ее внутренний char[] ), а вместо этого каждый раз будет создаваться новый внутренний char[], что поможет избежать одной из известных утечек памяти, а также сделает полностью бесполезным коструктор new String(String).
Re: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
Здравствуйте, mik1, Вы писали:
M>Сегодня обнаружил, что из 8-ки в 1.7.0_07 перетащили измемение структуры private полей класса java.lang.String. M>Больше нет полей offset и length, и появился новый hash32 (с другим алгоритмом хеширования). M>По сути, это изменение означает, что String.substring / Pattern.split больше не будут шарить оригинальную строку ( ее внутренний char[] ), а вместо этого каждый раз будет создаваться новый внутренний char[], что поможет избежать одной из известных утечек памяти, а также сделает полностью бесполезным коструктор new String(String).
По-моему это два разных фикса. http://docs.oracle.com/javase/7/docs/technotes/guides/collections/changes7.html
Re[2]: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
Здравствуйте, mik1, Вы писали:
M>Странно. Я тащу JDK только отсюда: M>http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html M>У меня он есть и в Виндовой 64 bit 1.7.0_07 и в Линуксовой 64 bit 1.7.0_09.
Да, это у меня какая-то херь под видом 7го апдейта притаилась. Скачал u9 — полей уже нет.