рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░! рд╣рдордиреЗ рдЕрдЧрд▓рд╛ рд╕реЗрдЯ рдЕрдм рдиреМрд╡реЗрдВ рд╕рдореВрд╣
, рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рдореВрд╣ (рдФрд░ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рджрд╕рд╡реЗрдВ рд╕рдореВрд╣, рдЕрдЪрд╛рдирдХ, 31 рджрд┐рд╕рдВрдмрд░ рдХреЛ) рдХреЗ рд▓рд┐рдП
рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдФрд░
рдПрдХ рдЦреБрд▓рд╛ рдкрд╛рда рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рдЬрд╛рд╡рд╛ 9 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХреЙрдореНрдкреИрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдПрд╕рдИ 9 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЗрд╡реАрдПрдо (рдУрд░реЗрдХрд▓ рд╣реЙрдЯрд╕реНрдкреЙрдЯ, рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдХреЙрдореНрдкреИрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдирд┐рдХрд▓рд╛ред рдЙрдирдХрд╛ рдХрд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ (рдкрджрдЪрд┐рд╣реНрди) рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдЕрд╡рд▓реЛрдХрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рдХрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рд▓реИрдЯрд┐рди -1 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:
private final char value[];
java.lang.String
рдЕрдм рдпрд╣ рд╣реИ:
private final byte[] value; private final byte coder;
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди
char
рд╕рд░рдгреА (рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ 2 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (рд▓реИрдЯрд┐рди -1 рдпрд╛ UTF-16) рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд▓реИрдЯрд┐рди -1 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рдЖрдзреЗ рд╣реАрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░реЛрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ, рдЬреИрд╕реЗ рдХрд┐
StringBuilder
, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд▓рд╛рдн
StringBuilder
ред
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдвреЗрд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдо рд╕рд░рдгреА рдХреЗ рдкрджрдЪрд┐рд╣реНрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ (рдКрдкрд░ рдорд╛рди рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд), рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджрд░реНрдн (рдПрдХ рдЪрд░рд┐рддреНрд░ рд╕рд░рдгреА рд╕рдВрджрд░реНрдн рдХреА рддрд░рд╣ рдПрдХ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕рдВрджрд░реНрдн, 4 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб JOL
GraphLayout
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
public class JOLSample { public static void main(String[] args) { System.out.println(GraphLayout.parseInstance("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz").toFootprint()); } }
) ToFootprint ()); public class JOLSample { public static void main(String[] args) { System.out.println(GraphLayout.parseInstance("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz").toFootprint()); } }
рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛ 8 рдореЗрдВ рдФрд░ рдлрд┐рд░ рдЬрд╛рд╡рд╛ 9 рдореЗрдВ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЕрдВрддрд░ рджрд┐рдЦрддрд╛ рд╣реИ:
$java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) $java -cp lib\jol-cli-0.9-full.jar;. test.JOLSample java.lang.String@4554617cd footprint: COUNT AVG SUM DESCRIPTION 1 432 432 [C 1 24 24 java.lang.String 2 456 (total) ... $java -version java version "9" Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) $java -cp lib\jol-cli-0.9-full.jar;. test.JOLSample java.lang.String@73035e27d footprint: COUNT AVG SUM DESCRIPTION 1 224 224 [B 1 24 24 java.lang.String 2 248 (total)
Java.lang.String (рд╣реЗрдбрд░ рдкреНрд▓рд╕ рд▓рд┐рдВрдХ) рдХреЗ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХреЛрдВ рдХреЗ 24-рдмрд╛рдЗрдЯ рдЖрдХрд╛рд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐, рдЗрд╕рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХреЗ рдХрд╛рд░рдг, рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ рдЖрдзрд╛ рдШрдЯ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо UTF-16 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдФрд░ рдКрдкрд░ рдХреА рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП \ u0780, рдФрд░ рдлрд┐рд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рддреЛ рдЬрд╛рд╡рд╛ 8 рдФрд░ рдЬрд╛рд╡рд╛ 9 рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкрджрдЪрд┐рд╣реНрди рджрд┐рдЦрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
java
рдХрдорд╛рдВрдб рдореЗрдВ
-XX:-CompactStrings
рдкрд╛рд╕ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдпрд╣рд╛рдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЖрдкрдХреЛ
рдПрдХ рдЦреБрд▓реЗ рдкрд╛рда рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред