
рд╣рд╛рд▓ рд╣реА рдореЗрдВ
рдЬрд╛рд╡рд╛ рд╡рди рдореЗрдВ, рд░реБрд╕реНрд▓рд╛рди
рдХреЗрд░реЗрдорд┐рди рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐
рдбрд┐рд╕реНрдХреНрд░рд╛рдЗрдмрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рдереЗ, рдЬрд┐рдирдХрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдЬреАрд╕реА рдХреЛ рдХрд╛рдЯрдирд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╢реБрд░реБрдЖрдд рд╣реИред рдХрдЯ рдХреЗ рддрд╣рдд, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдУрдкрдирдЬреЗрдбрдХреЗ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдореЗрдВ рд╕реЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ "рдХреНрдпреЛрдВ" рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛ рд╣реИред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ? рджреЛ рдФрд░ рджреЗ рджреЛ рдФрд░ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХреЗ!
рдореБрдЦреНрдп рдкрд╛рдареНрдпрдХреНрд░рдо
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 { |
рдареАрдХ рд╣реИ, рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ред
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
| |
рдпрд╣рд╛рдБ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ: рдкрд╣рд▓реА рд╡рд┐рдзрд┐, рдмрд╕
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 ) рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИред