[Java 1.7.0_07+] Изменения в структуре класса java.lang.String
От: mik1  
Дата: 06.12.12 00:53
Оценка: 14 (4)
Сегодня обнаружил, что из 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  
Дата: 06.12.12 02:56
Оценка: 1 (1)
На самом деле изменение было сделано в 1.7.0_06:
http://hg.openjdk.java.net/jdk7u/jdk7u6/jdk/file/8c2c5d63a17e/src/share/classes/java/lang/String.java
Re[2]: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
От: avpavlov  
Дата: 06.12.12 07:30
Оценка:
Здравствуйте, mik1, Вы писали:

M>На самом деле изменение было сделано в 1.7.0_06:

M>http://hg.openjdk.java.net/jdk7u/jdk7u6/jdk/file/8c2c5d63a17e/src/share/classes/java/lang/String.java

На самом деле изменение было сделано в предыдущей ревизии

http://hg.openjdk.java.net/jdk7u/jdk7u6/jdk/diff/e1c679a00712/src/share/classes/java/lang/String.java
Re: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
От: Blazkowicz Россия  
Дата: 06.12.12 07:33
Оценка: 2 (2)
Здравствуйте, 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
От: Blazkowicz Россия  
Дата: 06.12.12 07:34
Оценка: 1 (1)
Здравствуйте, mik1, Вы писали:

M>На самом деле изменение было сделано в 1.7.0_06:

M>http://hg.openjdk.java.net/jdk7u/jdk7u6/jdk/file/8c2c5d63a17e/src/share/classes/java/lang/String.java
И, вероятно, только в OpenJDK. В jdk1.7.0_07 src.zip ещё offset и count присутствуют.
Re[3]: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
От: mik1  
Дата: 06.12.12 09:26
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, mik1, Вы писали:


M>>На самом деле изменение было сделано в 1.7.0_06:

M>>http://hg.openjdk.java.net/jdk7u/jdk7u6/jdk/file/8c2c5d63a17e/src/share/classes/java/lang/String.java
B>И, вероятно, только в OpenJDK. В jdk1.7.0_07 src.zip ещё offset и count присутствуют.

Странно. Я тащу JDK только отсюда:
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

У меня он есть и в Виндовой 64 bit 1.7.0_07 и в Линуксовой 64 bit 1.7.0_09.
Re[4]: [Java 1.7.0_07+] Изменения в структуре класса java.lang.String
От: Blazkowicz Россия  
Дата: 06.12.12 09:45
Оценка:
Здравствуйте, 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 — полей уже нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.