рд▓рд╛рдареА рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрд┐рдирд╛, рдЕрдкрдиреЗ рдЬреЗрдбреАрдХреЗ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд╡рд╛ рд╡рди рдореЗрдВ, рд░реБрд╕реНрд▓рд╛рди рдХреЗрд░реЗрдорд┐рди рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдбрд┐рд╕реНрдХреНрд░рд╛рдЗрдмрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рдереЗ, рдЬрд┐рдирдХрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдЬреАрд╕реА рдХреЛ рдХрд╛рдЯрдирд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╢реБрд░реБрдЖрдд рд╣реИред рдХрдЯ рдХреЗ рддрд╣рдд, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдУрдкрдирдЬреЗрдбрдХреЗ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдореЗрдВ рд╕реЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ "рдХреНрдпреЛрдВ" рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛ рд╣реИред



рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ? рджреЛ рдФрд░ рджреЗ рджреЛ рдФрд░ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХреЗ!


рдореБрдЦреНрдп рдкрд╛рдареНрдпрдХреНрд░рдо


OpenJDK рдХреЛ рдЬрдВрдЧрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХрд╣рдирд╛ рд╣реИ

$ hg fclone http://hg.openjdk.java.net/jdk7/jdk7 

рдпрджрд┐ рд╡рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $ hg clone http://hg.openjdk.java.net/jdk7/jdk7 && jdk7/get_source.sh 


рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкреВрд░реНрдг-рд╕рд╛рдЗрдЯ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдХреЛрдиреЛрдВ рдХреЛ рдХрд╛рдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдХрд░реНрд╖рдг рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛: рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, jaxp рдФрд░ jaxws рдХреЛ рдПрдХ рдЕрд▓рдЧ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдЗрдЯреЛрдВ ( jaxp.java.net рдФрд░ jax-ws.java.net ) make рдбрд╛рдЙрдирд▓реЛрдб make рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ ALLOW_DOWNLOADS=true рдХрд╣рдХрд░ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ make рдбрд╛рдЙрдирд▓реЛрдб make рдЕрдиреБрдорддрд┐ рджреЗрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред рдЕрд░реЗ рд╣рд╛рдБ, рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рдЙрдкрдХрд░рдг рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдкрдХрд╡рд╛рди рдкрдХрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛


рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╕рд╛рдп, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣рд░ рдЪреАрдЬ рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк jdk рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕реНрдХрд░рдг 1.6ред рдЖрдкрдХреЛ рдЪрд░ ALT_BOOTDIR рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдкрд╖реНрдЯ ant рдФрд░ рд╕реАрдпреВрдкреАрдПрд╕ рдФрд░ рдПрдПрд▓рдПрд╕рдП рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдвреЗрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рдм рдХреБрдЫ рд╣реИ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╕реЗ рд╕рднреА рдмрд┐рд▓реНрдб рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЛрдЧреНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

 $ aptitude build-dep openjdk-6 


рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ, рдЖрдкрдХреЛ sanity рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ sanity ред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

 $ LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk make sanity 


рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рд╢рд┐рд▓рд╛рд▓реЗрдЦ Sanity check passed рдХрд░рддреЗ рджреЗрдЦреЗрдВрдЧреЗ

рдпрджрд┐ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрджреНрдзрд┐рдорд╛рди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЕрдм рдЖрдк рдЦреБрдж рд╣реА jdk рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдиреЗ рдкрд╣рд▓реЗ ALLOW_DOWNLOADS рдЬреЛрдбрд╝рд╛ред
 $ ALLOW_DOWNLOADS=true LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk make 


рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, 20-40 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдлреЙрд░реНрдо рдХрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛

 #-- Build times ---------- Target all_product_build Start 2012-04-20 01:56:53 End 2012-04-20 02:02:14 00:00:06 corba 00:00:09 hotspot 00:00:06 jaxp 00:00:08 jaxws 00:04:47 jdk 00:00:05 langtools 00:05:21 TOTAL 


рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдирд╛ рд╣реИред

 $ ./build/linux-amd64/bin/java -version openjdk version "1.7.0-vasily_p00pkin" OpenJDK Runtime Environment (build 1.7.0-vasily_p00pkin-gs_2012_04_20_01_06-b00) OpenJDK 64-Bit Server VM (build 23.0-b21, mixed mode) 


рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИ ...


... рдмреАрдПрд╕рдбреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд


рдпрд╣рд╛рдВ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЪреНрдЫреЗ рдУрд░реЗрдХрд▓ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рдЦреНрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рддрд╣рдд, рдореИрдВ рдПрдХ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЛ рдПрдХ рдореИрдХрдмреБрдХ рдкрд░ Sapsan рдХреЗ рд╕рдВрд╡рд┐рддрд░рдг рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рд▓реЗрдХрд┐рди рдкреВрд░реА рд░рд╛рдд рдкреВрд░реА рдЬреЗрдбреАрдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдирдП рдЬрд╝реЗрдм рдФрд░ рдмрд╣реБрдд рдзреИрд░реНрдп рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдпрд╛ рджреВрд╕рд░рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рд▓реЗрдХреНрдЯ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд╢реАрди рд╢реБрд░реВ рдХреА рдФрд░ рдЙрд╕ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдПред рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рддреЗрдЬ рд╣реИ, рдЬрдмрдХрд┐ рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕рдордп рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдмрдЬрд╛рдп рддрд▓рд╡рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд▓рдбрд╝рдирд╛, рдХреБрд░реНрд╕рд┐рдпреЛрдВ рдкрд░ рд╕рд╡рд╛рд░реА рдХрд░рдирд╛)ред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдПрдХ рдЦрд╕рдЦрд╕ тАЛтАЛрдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред

... рдареАрдХ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╣реИ рдирд╛?


рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рднреА рдирд╣реАрдВ рд╣реИред рдЦреБрдж рдХреЛ рд╕рд╛рдЗрдмрд░рд╡рд┐рди рдФрд░ рд╕реНрдореЛрдХ рдореИрдирд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзреЗред

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреА рд╢реБрд░реБрдЖрдд

- рд░реЛрдЧреА, рдХреНрдпрд╛ рдЖрдк рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВ?
- рдЖрдк рдХреНрдпрд╛ рд╣реИрдВ, рдбреЙрдХреНрдЯрд░! рдореИрдВ рдЙрдирдХрд╛ рдЖрдирдВрдж рд▓реЗрддрд╛ рд╣реВрдВ!
рдЕрдм рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдореЗрдВ рдЖрдкрдХреЛ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рддреАрди рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╣реИрдВ: рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреВрдЫреЗрдВ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝реЗрдВ, рдпрд╛ рдЪрд╛рд▓рд╛рдХ рдФрд░ рд╕рдВрд╕рд╛рдзрдирдкреВрд░реНрдгрддрд╛ рджрд┐рдЦрд╛рдПрдВред рдкрд╣рд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рдирдХрд╛рд░ рд▓реЛрдЧ рдореБрдЭреЗ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рджреЗрдЦрддреЗ рдереЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджрд┐рдЧреНрдз рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЪрд▓реЗ рдЬрд╛рддреЗ рдереЗред рджреВрд╕рд░реА рд╡рд┐рдзрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реИрдЪрд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╣реА рдереА, рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рджрдпрд╛ рдереАред рдЗрд╕рд▓рд┐рдП, рддреАрд╕рд░реА рд╡рд┐рдзрд┐ рдмрдиреА рд░рд╣реАред

рд╣рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░рдг рджреЗрдВ: рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рджреЛ рд░рд╛рд╕реНрддреЗ рддреБрд░рдВрдд рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреИрд╕реЗ -XX:+UseParallelGC ) рдФрд░ System.gc() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдФрд░ рдпрджреНрдпрдкрд┐ рдкреВрд░реНрд╡ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдмрд╛рдж рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ javadocs рдмреНрдпрд╛рдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЬрд╛рд╡рд╛ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ, рдпрд╣ рдХреЙрд▓ рд░рдирдЯрд╛рдЗрдо рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд╣реИред рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдХрднреА Java_java_lang_Runtime_gc рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рджреЗрд╢реА рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: Java_java_lang_Runtime_gc ред рддреНрд╡рд░рд┐рдд grep jdk/src/share/native/java/lang/Runtime.c рдореЗрдВ рдРрд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
 62 63 64 65 66 

 JNIEXPORT void JNICALL Java_java_lang_Runtime_gc(JNIEnv *env, jobject this) { JVM_GC(); } 

JVM_GC , рдЕрдм JVM_GC рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдирдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди src/share/vm/prims/jvm.cpp рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдХрдо рдирд╣реАрдВ src/share/vm/prims/jvm.cpp :
 404 405 406 407 408 409 

 JVM_ENTRY_NO_ENV(void, JVM_GC(void)) JVMWrapper("JVM_GC"); if (!DisableExplicitGC) { Universe::heap()->collect(GCCause::_java_lang_system_gc); } JVM_END 
рдпрд╣рд╛рдВ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рд╣реИ DisableExplicitGC , рдЬрд┐рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ Universe::heap() рдХреА collect рд╡рд┐рдзрд┐ Universe::heap() ред рдпрд╣ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ System.gc() рдХреЗрд╡рд▓ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд▓реЗрдХреНрдЯрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдирд╛рдЯрдХ рдирд╣реАрдВред рд╣рд╛рдБред рдареАрдХ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, collect() рд╡рд┐рдзрд┐ рдореЗрдВ, рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд╝рд╛рдЗрд▓ hotspot/src/share/vm/memory/universe.hpp рдореЗрдВ рдмреНрд░рд╣реНрдорд╛рдгреНрдб рд╡рд░реНрдЧ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреЗрдЯрд┐рдХ heap рд╡рд┐рдзрд┐ CollectedHeap* рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА initialize_heap() рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐

рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдереЛрдбрд╝рд╛ рдЧреЗрдп рд╡рд┐рд╖рдпрд╛рдВрддрд░


рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ OpenJDK рдореЗрдВ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИ: рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрд░рдЪрдирд╛, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╣рд╛рди рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:
 121 122 123 124 125 126 127 

 class Universe: AllStatic { // Ugh. Universe is much too friendly. friend class MarkSweep; friend class oopDesc; //   friend' //... } 

рдареАрдХ рд╣реИ, рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ред initialize_heap() рд╡рд┐рдзрд┐ рдПрдХ рдвреЗрд░ рдмрдирд╛рддреА рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реА рд╕реВрдЪреА hotspot/src/share/vm/gc_interface/collectedHeap.hpp :

 192 193 194 195 196 197 198 

 enum Name { Abstract, SharedHeap, GenCollectedHeap, ParallelScavengeHeap, G1CollectedHeap }; 

рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:

 519 520 521 522 523 524 525 526 527 528 

 // Perform a collection of the heap; intended for use in implementing // "System.gc". This probably implies as full a collection as the // "CollectedHeap" supports. virtual void collect(GCCause::Cause cause) = 0; // This interface assumes that it's being called by the // vm thread. It collects the heap assuming that the // heap lock is already held and that we are executing in // the context of the vm thread. virtual void collect_as_vm_thread(GCCause::Cause cause) = 0; 

рдпрд╣рд╛рдБ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ: рдкрд╣рд▓реА рд╡рд┐рдзрд┐, рдмрд╕ collect() , "рдмрд╛рд╣рд░ рд╕реЗ" рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, System.gc рдпрд╛, рдЙрд╕реА grep рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЕрдЧрд░ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред рджреВрд╕рд░рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдереНрд░реЗрдб рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдФрд░ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рддрд╛рд▓реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ)ред рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рддреБрд░рдВрдд рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬрдм рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╣реИ: рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдвреЗрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдкрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ( GenCollectedHeap рд╕рд╛рде MarkSweepPolicy рдХреЛ рд╕рд░рд▓рддрдо рдХреЗ рд░реВрдк рдореЗрдВ) рдЪреБрдирдирд╛ рдерд╛, рдФрд░ рдзреНрд╡рдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ UseTheForce рдХрд╣рд╛ UseTheForce ), рдпрд╣ рдЙрди рддрд░реАрдХреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдерд╛ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рддрд░рд╣ рд╣реБрдЖред

рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ!


рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди, OOM рдХреЛ рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ:
 1 2 3 4 5 6 7 8 9 10 11 

 public class TheForceTester { public static final int ARRAY_SIZE = 1000000; public static void main(String[] args) { while (true) { byte[] lotsOfUsefulData = new byte[ARRAY_SIZE]; } } } 
рдФрд░ рд╣рдорд╛рд░реЗ рдирдП рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВ:

 $ ./build/linux-amd64/bin/java -XX:+UseTheForce -verbose:gc TheForceTester Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at ru.yandex.holocron.core.TheForceTester.main(TheForceTester.java:10) 


рд╣реБрд░реНрд░реЗ! рднрдпрдВрдХрд░ рдорджрд┐рд░рд╛! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдЖрдк рд╡рд░реНрддрдорд╛рди рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рдХреА рд╕рдм рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ: Xmx != Xms рдкрд░ рдвреЗрд░ рдлреИрд▓рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд▓рд╛рд╕! рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪрдореНрдордЪ рдЯрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдЕрд╕реНрд╡реАрдХрд░рдг рдФрд░ рдлрд┐рд░ рднреА рдЙрд╕реА рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░


рдЙрд╕реА рдкреНрд░рд╢реНрди рдХреЗ рджреНрд╡рд╛рд░рд╛, рдореИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, "рдФрд░ рдХреНрдпреЛрдВ?" рдХрд╛ рдорддрд▓рдм рд╣реИред рд╡рд┐рд╖рдп рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рд╡реНрдпрд╡рдзрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрд╡реЗрджрди рдореЗрдВ рдЦрд░рд╛рдм рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдпреЛрдЧреНрдп рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЬреАрд╕реА рдХреЛ рдкрд┐рдпрд╛ - рдпрд╣ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рддрд░реАрдХрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рд╛рде рд╣реА рдЙрддреНрд╕реБрдХ рднреАред

рдЕрд╕реНрд╡реАрдХрд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдмрд▓реНрдХрд┐ рдЧрдВрджрд╛ рд╣реИ, рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рддрддреНрдХрд╛рд▓ рдмрдирд╛рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп рдУрд╡рд░рд╣реЗрдбреНрд╕ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ, рдпрд╣ рдЖрдкрдХреЗ CollectedHeap рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛, рдЬреЛ рдЗрди рд╕рднреА рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рдмрд╛рдж рднреА, рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдФрд░ рдЬрдЧрд╣реЗрдВ рд╣реЛрдВрдЧреА рдЬрд┐рдирдореЗрдВ рдЖрдкрдХреЛ рдШреВрдордирд╛ рдкрдбрд╝реЗрдЧрд╛ред

рдЗрд╕ рд╕рдм рд╕реЗ рдХреНрдпрд╛? рдЕрдзрд┐рдХ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ! :)


PS рдЖрдк рдФрд░ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ?

PPS рдХреЛ linux-amd64 рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛: clck.ru/1-L-9 (Yandex.Disk)

PPPS рдХреГрдкрдпрд╛ рдореЗрд░реА рд╕рдВрдкреВрд░реНрдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рди рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рд╡рдЬрди 600+ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдорд╢реАрди рдкрд░ рдпрд╣ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ java.net рдХреА рдУрд░ рдЭреБрдХрд╛рд╡ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдПрдХрд▓ рдХрдорд┐рдЯ ( 3358: 3f014511ecce ) рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИред

Source: https://habr.com/ru/post/In142447/


All Articles