(рдкрд┐рдпрд░реЗ-рд╣реНрдпреВрдЬреЗрд╕ рдЪрд╛рд░рдмреЛрди рдХреЗ рд▓реЗрдЦ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрдиреБрд╡рд╛рдж)
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛ рд╡рди рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛,
рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЗ рдЬрд╛рд╡рд╛ 8 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕рдХреА рдирдИ рднрд┐рдиреНрдирддрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдкрд░реНрдордЧреЗрди рд╕реНрдерд╛рди
рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рдореЗрдЯрд╕реНрдкреИрд╕ред JDK 8 рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╣реБрдВрдЪ рдореЗрдЯрд╛рд╕реНрдкреИрд╕ рдХреЛ рдПрдХреНрд╢рди рдореЗрдВ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреЗрдорд╛рдЧреЗрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЗрдЯрд╛рд╕реНрдкреЗрд╕ рдХреНрдпрд╛ рд▓рд╛рдн рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕реАрдзреЗ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред
Metaspace рдХреНрдпрд╛ рд╣реИ?
рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ JRockit рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп, рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ JRockit рдФрд░ IBM JVM рдХреЗ рд╕рдорд╛рди рджреЗрд╢реА рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрдмрдВрдЯрд┐рдд рдореВрд▓ рдореЗрдореЛрд░реА рдХреЗ рднрд╛рдЧ рдХреЛ рдореЗрдЯрд╕реНрдкреИрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ,
рдореЗрдЯрд╕реНрдкреИрд╕ рдкреЗрд░реНрдореЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ , рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░
рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдореВрд▓ рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИред
PermSize рдФрд░ MaxPermSize рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм рд░рджреНрдж рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ (рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ
рдкрд░ JVM рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛ рдХрд┐ рд╡реЗ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ), рдФрд░ рдЙрдирдХреЗ рдмрдЬрд╛рдп рд╡реИрдХрд▓реНрдкрд┐рдХ
MaxMetaspaceSize рдкреИрд░рд╛рдореАрдЯрд░
рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк Metaspace рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирддреАрдЬрддрди,
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрддрдо рдореЗрдЯрд╛рд╕реНрдкреИрд╕ рджреЗрд╢реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ ред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ MaxMetaspaceSize рдкреИрд░рд╛рдореАрдЯрд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ MaxPermSize рдХреЗ рд╕рдорд╛рди рд╣реИред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ "java.lang.OutOfMemoryError: PermGen space" рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрджрд┐ рдореЗрдЯрд╕реНрдкреИрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдкрдиреА рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдЕрдзрд┐рдХрддрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рджреЗрд╢реА рдореЗрдореЛрд░реА рд╣реЛ рдпрд╛ рдореИрдХреНрд╕рдореЗрдЯреНрд╕рд╕реНрдкреЗрд╕ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛ - рдПрдХ рд╕рдорд╛рди рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: "java.lang.OutOfemoryError: рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рд╕реНрдкреЗрд╕"ред
рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣
рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд▓реЙрдЧ рдореЗрдЯрд╛рд╕реИрдк рдореЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рднреА рдХрд░реЗрдВрдЧреЗред
рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рд╕реНрд╡рдпрдВ, рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддрдм рд╣реЛрдЧрд╛
рдЬрдм рдореЗрдЯрд╛рд╕реНрдкреИрд╕ рдореИрдХреНрд╕рдореЗрдЯреНрд╕рд╕реНрдкреЗрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ ред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкреНрд░рдпреЛрдЧреЛрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдХреНрд╕рдореЗрдЯреЗрд╕реИрд╕реЗрдЬрд╝ рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд╢реАрд▓ рд╡реГрджреНрдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдЯрд╛рд╕реИрдк рдореЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдкреНрд░рдпреЛрдЧреЛрдВ
рдкрд░реНрдордЧреЗрди рд╕реНрдкреЗрд╕ / рдореЗрдЯрд╕реНрдкреЗрд╕ (рдЬреЗрд╡реАрдПрдо 64-рдмрд┐рдЯ рд╡реЗрдЯ рдкрд░ рд╕рднреА) рднрд░рдиреЗ рдкрд░ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рддреАрди рдкреНрд░рдпреЛрдЧ рдХрд┐рдП:
- JDK 1.7, MaxPermSize = 128 рдПрдордмреА
- JDK 1.8 (b75), MaxMetaspaceSize рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ
- JDK 1.8 (b75), рдореИрдХреНрд╕рдореИрдЯреЗрд╕реИрд╕реЗрдЬ = 128 рдПрдордмреА
рдирддреАрдЬрддрди, рд▓реЗрдЦрдХ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐:
- MaxDermSize = JDK 1.7 рдкрд░ 128 MB рдХреЗ рд╕рд╛рде, рд╡рд╣ рдПрдХ рдЕрдкрд╡рд╛рдж "OutOfMemoryError: PermGen space" рдХреЛ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд┐рд░реНрдл 30 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
- рдЬреЗрдбреАрдХреЗ 1.8 рдкрд░ рдореИрдХреНрд╕рдореИрдЯрд╕реНрдкреЗрд╕ рдХреА рд╕реАрдорд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ, рдЙрдирдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ 50 рд╣рдЬрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ (рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдм рдФрд░ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА) рд▓реЛрдб рдХрд┐рдпрд╛
- 128 MB рдХреА рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде MaxMetaspaceSize JDK 1.8 рдкрд░, рдкрд░рд┐рдгрд╛рдо MaxPermSize = 128 MB рдкрд░ JDK 1.7 рдХреЗ рд╕рдорд╛рди рдерд╛ - рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 30 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ "OutOememoryError: рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рд╕реНрдерд╛рди"
рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ, рд▓реЗрдЦрдХ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдл рдФрд░ рдЧрд╛рд░рдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ рд▓реЙрдЧ рдХрд╛ рднреА рд╣рд╡рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реИ - рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрд┐рдирд╛ рдЪрд╛рд░реНрдЯ рдФрд░ рд▓реЙрдЧ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирд╡рд╛рдЪрд╛рд░ рдЧреНрд░рд╛рд╣рдХ рдорд╢реАрдиреЛрдВ рдкрд░ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреАрдВрдЯреА / рдорд╛рд╡реЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рдХрднреА-рдХрднреА рдмрд┐рд▓реНрдб рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд╕рдкрд░рдорд╛рдЗрдЬ рдХреЛ рдЙрдард╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдФрд░ рдпрд╣ рдЙрди (рдпрджреНрдпрдкрд┐ рджреБрд░реНрд▓рдн) рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░реНрдордЧреЗрди рдкреНрд░рддрд┐рдмрдВрдз рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред