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

рдбреЙрдХреНрдЯрд░, рдЖрдкрдХреЛ рдРрд╕реА рддрд╕реНрд╡реАрд░реЗрдВ рдХрд╣рд╛рдБ рд╕реЗ рдорд┐рд▓рддреА рд╣реИрдВ? рдУ'рд░рд┐рд▓реА рдХрд╡рд░реНрд╕ рдХреЙрд░реНрдирд░: рдХреЗрдбреАрдкреАрд╡реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЬреЛрд╢реБрдЖ рдиреНрдпреВрдЯрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрдВрдбреЛрдиреЗрд╢рд┐рдпрд╛ рдХреЗ рдЙрдмреБрдж рдореЗрдВ рд╕рд╛рдВрдЧрдпрд╛рдВрдЧ рдЬрд╛рд░рди рд╕реЗрдХреНрд░реЗрдб рдбрд╛рдВрд╕ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдЧ рдФрд░ рдЯреНрд░рд╛рдиреНрд╕ рдиреГрддреНрдп рд╕реЗ рдмрдирд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдмрд╛рд▓рд┐рдиреА рдкреНрд░рджрд░реНрд╢рди рд╣реИред рдирдВрдЧреЗ рд╣реАрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрджрдореА рдПрдХ рдЕрд▓рд╛рд╡ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ, рдирд╛рд░рд┐рдпрд▓ рдХреА рднреВрд╕реА рдкрд░ рдмрдВрдз рдЬрд╛рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдкреИрд░реЛрдВ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рд┐рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдШреЛрдбрд╝реЗ рдХреА рдЖрддреНрдорд╛ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдПрдХ рдЯреНрд░рд╛рдиреНрд╕ рд░рд╛рдЬреНрдп рдореЗрдВ рдиреГрддреНрдп рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬреЗрдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЪрд┐рддреНрд░рдг, рд╕рд╣реА рд╣реИ?
рд╕реНрд▓рд╛рдЗрдб рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╡рд░реНрдгрди (рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рд╣реИрдмреНрд░реЛрдЯреЛрдкрд╛рдЗрдХ рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдирдорд╕реНрдХрд╛рд░, рдореЗрд░рд╛ рдирд╛рдо Sanhong рд▓реА рд╣реИ, рдореИрдВ рдЕрд▓реАрдмрд╛рдмрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП OpenJDK рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВред рдкреЛрд╕реНрдЯ рдореЗрдВ рддреАрди рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рдЗрд╕рдореЗрдВ рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП OpenJDK рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рддреАрд╕рд░рд╛ рднрд╛рдЧ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдордиреЗ рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдереЗред
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЖрд░реЗрдЦ рдЕрд▓реАрдмрд╛рдмрд╛ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрдирд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдмрд╛рдЬрд╛рд░ рдХрд╛ рд╕рдВрдЧрдарди рдФрд░ рд╡рд┐рддреНрддреАрдп рдФрд░ рд░рд╕рдж рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реВрд╕ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ AliExpress рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдЕрд▓реАрдмрд╛рдмрд╛ рдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреА рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЯреАрдо рд╣реИ рдЬреЛ рдкреВрд░реЗ рд╡рд┐рддрд░рд┐рдд рд╕реНрдЯреИрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ Aliexpress рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрд▓реАрдмрд╛рдмрд╛ рдХреЗ рдХрд╛рдо рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЧрд▓реНрд╕ рдбреЗ рдкрд░ рдЪреАрди рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╣рд░ рд╕рд╛рд▓ 11 рдирд╡рдВрдмрд░ рдХреЛ рдордирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рджрд┐рди рд▓реЛрдЧ рдЕрд▓реАрдмрд╛рдмрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдИ рд╕рд╛рдорд╛рди рдЦрд░реАрджрддреЗ рд╣реИрдВред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреА рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЦрд░реАрджрд╛рд░реА рд╣реИред

рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЖрдк рдПрдХ рдЪрд┐рддреНрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдорд░реНрдерди рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд▓реЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд▓рд╛рд▓ рд░реЗрдЦрд╛ рд╣рдорд╛рд░реА рдСрд░реНрдбрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдХрд╛рдо рджрд┐рдЦрд╛рддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓реЗрдирджреЗрди рдХреА рдЪрд░рдо рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддреА рд╣реИ, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдпрд╣ 325 рд╣рдЬрд╛рд░ рдереАред рдмреНрд▓реВ рд▓рд╛рдЗрди рднреБрдЧрддрд╛рди рд╕реЗрд╡рд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ 256 рд╣рдЬрд╛рд░ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЗрдирджреЗрди рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреИрдХ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЖрдЗрдП рдореБрдЦреНрдп рддрдХрдиреАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдУрдкрди рд╕реЛрд░реНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВред рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо HBase Hadoop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдЯреЙрдордХреИрдЯ рдФрд░ рдУрдПрд╕рдЬреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рд▓рд╛рдЦреЛрдВ рдЬреЗрд╡реАрдПрдо рдЗрдВрд╕реНрдЯреИрдВрд╕ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗрд╡рд╛-рдЙрдиреНрдореБрдЦ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдо рдХрдИ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ RPC рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддреА рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╡рд┐рд╖рдо рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реА рдФрд░ рд╕реА ++ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЬреЗрдПрдирдЖрдИ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред

OpenJDK рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ 2011 рдореЗрдВ OpenJDK 6 рдХреЗ рджреМрд░рд╛рди рд╢реБрд░реВ рд╣реБрдЖред рддреАрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ OpenJDK рдХреЛ рдХреНрдпреЛрдВ рдЪреБрдирд╛ред рдкрд╣рд▓рд╛, рд╣рдо рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ, рдЬрдм рдЬрд░реВрд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рддреАрд╕рд░рд╛, рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рддреЗрдЬ рдФрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрди рдореБрдЦреНрдп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рджреВрд░ рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЬреЗрд╡реАрдПрдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд▓реЙрдиреНрдЪ рдХреА рд╣реИ - рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рдПрдХ рдЧрдВрднреАрд░ рдореБрджреНрджрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд░рддреЗ рд╣реИрдВред рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд╛рд╡рд╛ рд╣рдореЗрдВ "рдЕрдирдВрдд рд╕реНрдореГрддрд┐" рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдмрджреМрд▓рдд рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЬреАрдд рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрдХ рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рднреА рд╣реИ: рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рджреБрдирд┐рдпрд╛ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рдкрдбрд╝рд╛рд╡ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╡рд╛ рдХреЛ рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реАрдкреАрдпреВ рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рд╕реАрдкреАрдпреВ рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЖрд╡реЗрджрди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдиреЗ рд╕реЗ рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрд┐рдЧрдбрд╝ рдЬрд╛рддреА рд╣реИрдВред
рддреАрд╕рд░реА рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдРрд╕реЗ рдЯреВрд▓реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдЬреЛ OpenJDK рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ JConsole рдпрд╛ VisualVMред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╣рдореЗрдВ рд╕рдЯреАрдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╣рдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JConsole рдпрд╛ VisualVM) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдо рдУрд╡рд░рд╣реЗрдб рдХреЗрд╡рд▓ рдПрдХ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреЗ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдЯреВрд▓ рд▓рд┐рдЦрдиреЗ рдереЗред

рдЪрд┐рддреНрд░ OpenJDK рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЙрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХрд╛рдмреВ рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдИ рдереАред
рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрдЯ рдЬреЗрд╡реАрдПрдо
рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣рдо рдПрдХ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЗрд╡реАрдПрдо рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдИ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди GCIH (GC рдЕрджреГрд╢реНрдп рдвреЗрд░) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреА рд▓рд╛рдЧрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзрд╛рдЧрд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ JWarmup рдирд╛рдо рдХрд╛ рдПрдХ рддрдВрддреНрд░ рд▓рд┐рдЦрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рд░реЗрдбреАрдиреЛ рдХреЗ рд╕рдорд╛рди рд╣реИред рдбрдЧрд▓рд╕ рд╣реЙрдХрд┐рдВрд╕ рдиреЗ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ ред рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЙрдкрдХрд░рдг ZProfiler рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред
рдЖрдЗрдП рд╣рдо OpenJDK- рдЖрдзрд╛рд░рд┐рдд рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрд╕реА рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

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

рддрд╕реНрд╡реАрд░ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо JVM рдХреЗ рдЕрдВрджрд░ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдИ рдореЙрдбреНрдпреВрд▓ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдереНрд░реЗрдб рдпрд╛ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЗрдП рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХрдВрдЯреЗрдирд░ рдПрдкреАрдЖрдИ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рд╣реИ рдЬреЛ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдЦреБрдж рдХрдВрдЯреЗрдирд░ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИред

рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, рд╣рдо рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдореЛрд░реА рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕рдордп рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд╕рдВрдХреЗрддрдХ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рд╕рдордп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдордиреЗ 512 рдХреЛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред рд╣рдо cgroups рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рджреВрд╕рд░рд╛ рдореАрдЯреНрд░рд┐рдХ рдЕрдзрд┐рдХрддрдо рдвреЗрд░ рдЖрдХрд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред TenantContainer
рд╡рд░реНрдЧ TenantContainer
.run()
рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдХреЛрдИ рдереНрд░реЗрдб рдЗрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╕реЗ TenantContainer
рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╡рд╣ рдЗрд╕реЗ рдЫреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╕рднреА рдХреЛрдб .run()
рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, .run()
рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдзрд╛рдЧрд╛ рдореВрд▓ рдзрд╛рдЧрд╛ рдХреЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред
рд╣рдо рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╡рд╛рд▓ рдкрд░ рдЖрдП - рд╕реАрдкреАрдпреВ рдХреЛ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЗрд╡реАрдПрдо рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдЕрднреА рд▓рд┐рдирдХреНрд╕ x64 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣ рддрдВрддреНрд░, cgroups рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдХрд╛ рдЖрдкрдХрд╛ рддрд░реАрдХрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдЬреЗрд╡реАрдПрдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣реЙрдЯрд╕реНрдЯреЙрдк рдореЗрдВ, рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдореВрд▓ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛ рдзрд╛рдЧрд╛ рдореВрд▓ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдПрдХ-рд╕реЗ-рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ TenantA
рдХрдВрдЯреЗрдирд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рджреЗрд╢реА рдзрд╛рдЧреЗ рд╣реИрдВред рд╕реАрдкреАрдпреВ рд╕рдордп рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛрдиреЛрдВ рдореВрд▓ рдзрд╛рдЧреЗ рдХреЛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЦрдкрдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, [рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣реЛрдВ] рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдкреВрд░реА рддрд░рд╣ рдирд┐рд░реНрднрд░ рд╣реИрдВ () https://en.wikipedia.org/wiki/Cgroups )ред
рдЖрдЗрдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рд▓рд┐рдирдХреНрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣реЛрдВ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ 0. рдХреЗ рд▓рд┐рдП /t0
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ /t0/tasks
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, t0
рд▓рд┐рдП рд╕рднреА рдзрд╛рдЧреЗ рдпрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ /t0/cpu.shares
ред рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдкреАрдпреВ рдХреЛ рдЗрд╕ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рдХрд┐рддрдирд╛ рд╕рдордп рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ - рд╣рдордиреЗ рдЬрд╛рд╡рд╛ рдзрд╛рдЧрд╛, рдореВрд▓ рдзрд╛рдЧрд╛ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣ рдХреЗ рдмреАрдЪ рд╕реАрдзреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

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

рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдКрдкрд░ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди G1GC рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред G1GC рдПрдХ рдХреЙрдкреА рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдвреЗрд░ рдХреЗ рд╕рд╣реА рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрд▓рд╛рдЗрдб рдкрд░, Tenant-1
рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ Tenant-2
рд╕рдорд╛рди рдвреЗрд░ рдХреЗ рдЕрдкрдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕реЗ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдЬреЛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЭреЗ TLAB (рдереНрд░реЗрдб рд▓реЛрдХрд▓ рдПрд▓реЛрдХреЗрд╢рди рдмрдлрд╝рд░) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рдореЗрдореЛрд░реА рдХреЗ рддреЗрдЬреА рд╕реЗ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ред TLAB рд╕реНрдерд╛рди рдвреЗрд░ рдЕрдиреБрднрд╛рдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдвреЗрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣ рд╣реИрдВред

TLAB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╕реНрд▓рд╛рдЗрдб рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЬрдм рдереНрд░реЗрдб Tenant 1
рд╕реЗ Tenant 2
рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдПрд▓рдПрдмреА рд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реАрдк рд╕реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕реЗ рджреЛ рддрд░рд╣ рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ Thread A
Tenant 1
рд╕реЗ Tenant 2
рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдмрд╕ рдкреБрд░рд╛рдиреЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ Tenant 2
рдореЗрдВ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ TLAB рдореЗрдВ рдЬрдЧрд╣ рдмрд░реНрдмрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рдЯреАрдПрд▓рдПрдмреА рдХреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рд╕реЗ рдЕрд╡рдЧрдд рдХрд░рд╛рдирд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдХрдИ TLAB рдмрдлрд╝рд░реНрд╕ рд╣реЛрдВрдЧреЗред рдЬрдм Thread A
Tenant 1
рд╕реЗ Tenant 2
рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдмрдлрд░ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ Tenant 2
рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рддрдВрддреНрд░ рдЬрд┐рд╕реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдкрд░рд┐рд╕реАрдорди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ IHOP (рдереНрд░реЗрдбрд┐рдВрдЧ рдСрдХреНрдпреВрдкреЗрдВрд╕реА рдкреЗрд░реЗрдВрдЯ рд╢реБрд░реВ рдХрд░рдирд╛)ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, IHOP рдХреА рдЧрдгрдирд╛ рдкреВрд░реЗ рдвреЗрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдкрд░рдд рддрдВрддреНрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдвреЗрд░ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЦрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдЪрд▓реЛ GCIH (GC рдЕрджреГрд╢реНрдп рдвреЗрд░) рдХреНрдпрд╛ рд╣реИ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рджреЗрдЦреЛред рдпрд╣ рддрдВрддреНрд░ рдХрдЪрд░реЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЫрд┐рдкреЗ рд╣реБрдП, рдвреЗрд░ рдкрд░ рдПрдХ рдЦрдВрдб рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рд╛рдЗрдЯ рдХрд╛ рдкреНрд░рдмрдВрдзрди GCIH рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдпрд╣ рдХрд╣рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░реАрди рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдвреЗрд░ рд╕реЗ GCIH рдвреЗрд░ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП MoveIn moveIn()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреА рд▓рд╛рдЧрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рддрд╕реНрд╡реАрд░ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп GCIH рдпреЛрдЬрдирд╛ рджрд┐рдЦрд╛рддреА рд╣реИред рджрд╛рдИрдВ рдУрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛ рд╣реАрдк рд╣реИ, рдмрд╛рдИрдВ рдУрд░ GCIH рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдерд╛рди рд╣реИред GCIH рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдвреЗрд░ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдВрдХ рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди GCIH рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдвреЗрд░ рдХреЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬреАрд╕реАрдЖрдИрдПрдЪ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ "рдП" рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдвреЗрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ "рдмреА" рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмреА рдХреЛ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рд╣рдо GCIH рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ "A" рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ "B" рдХрд╛ рдПрдХ рдЕрдорд╛рдиреНрдп рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреВрд░реНрд╡-рд▓реЗрдЦрди рдмрд╛рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкрд┐рдЫрд▓реА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЙрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛ рд╣реАрдк рд╕реЗ рд▓рд┐рдВрдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП GCIH рд╕реЗ рдкрд╣рд▓реЗ рдмрдЪрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рд╣рдордиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рд╕рдВрдХреЗрддрдХ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрд╡рд╕реВрдЪрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ JVM рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ Taobao рдирд┐рдЬреАрдХрд░рдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рдИ-рд╢реЙрдкрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдЯреАрдкреАрдкреА рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЗрд╡реАрдПрдо рдХреА рдорджрдж рд╕реЗ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд░ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдФрд░ рд╕реАрдкреАрдпреВ рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
GCIH рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо, UM рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдСрдирд▓рд╛рдЗрди рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдПрдкреНрд▓реАрдХреЗрд╢рди рд╣реИред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдорд╛рд▓рд┐рдХ GCIH рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ GCIH рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реА-рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд░рд┐рдореЛрдЯ рдХреИрд╢ рд╕рд░реНрд╡рд░ рдпрд╛ рд░рд┐рдореЛрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХреЗред рдирддреАрдЬрддрди, рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдо рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВред

рддрд╕реНрд╡реАрд░ рдПрдХ рдЖрд░реЗрдЦ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЬреЗрдбреАрдХреЗ рдФрд░ рд▓рд╛рд▓ - рдЬреАрд╕реАрдЖрдИрдПрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдиреАрд▓рд╛ рд░рдВрдЧ рд▓реЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо 18% рд╕реЗ рдЕрдзрд┐рдХ CPU рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдмреЗрд▓реНрд╕реЙрдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА рдЧрдИ рдереА , рдФрд░ рдЙрдирдХрд╛ рд╕рдорд╛рдзрд╛рди GCIH рдХреЗ рд╕рдорд╛рди рдерд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдбреАрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЬрд╛рд╡рд╛ рдореЗрдВ Coroutines
рдЖрдЗрдП рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрд░рдЖрдЙрдЯ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдореЗрдВ рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрд╢реА рдереНрд░реЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдереНрд░реЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдереНрд░реЗрдб рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд▓рд╛рдЧрдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде 4 I / O рдзрд╛рдЧреЗ рдФрд░ 200 рдзрд╛рдЧреЗ рд╣реЛрдВрдЧреЗред рд╕реНрдХреНрд░реАрди рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рд╕рд░рд▓ рдбреЗрдореЛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ - рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдкреАрдпреВ рдХреЛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрд░реБрдЯрд┐рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрд▓реАрдмрд╛рдмрд╛ JDK рдХреЛ рдирд┐рд░рдВрддрд░рддрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рдХрд╛рдо рдЬреЗрдХреЗрдпреВ рдкреИрдЪ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛, рд╣рдо рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред рджреВрд╕рд░реЗ, рд╣рдордиреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рддреАрд╕рд░реЗ, рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХреЛрдб рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ Wisp рдХрд╣рд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрд░рдЖрдЙрдЯ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдиреЗрдВред

рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдб рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдереНрд░реЗрдб рдкреВрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдПрдХ рдФрд░ Runnable рдХрд╛рд░реНрдп рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдзрд╛рд░рд╛ рд╕реЗ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдФрд░ рд░рдирдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдорд╛рдирдХ рджрд┐рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд JDK рдкрд░ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ Runnable рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдлреИрд╕рд▓реЗ рдореЗрдВ, рдпрд╛рдВрддреНрд░рд┐рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧреАред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрд▓рд╛рдЗрдб рдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдзрд╛рдЧреЗ рдХреЗ рдбрдВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рджреЛ рдХреЛрд░рдЯрд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреЛ рдзрд╛рдЧреЗ рдирд╣реАрдВред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╡рд░реЛрдзрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдпреАрд▓реНрдбрдЯреАрдУ рдЗрд╡реЗрдВрдЯ рдЬрдирд░реЗрд╢рди рдмрдирд╛рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпреЗ рдмрд┐рдВрджреБ serverSocket.accept()
, is.read(buf)
, рдПрдХ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдФрд░ os.write(buf)
ред рдЗрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдХреЗ рднреАрддрд░ рдПрдХ рдХреЛрд░рдЯрд╛рдЗрди рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо coroutine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рд╕рдордХрд╛рд▓рд┐рдХ рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред
рдЖрдЗрдП рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЕрд▓реАрдмрд╛рдмрд╛ рдЬреЗрдбреАрдХреЗ рдореЗрдВ рдирд┐рд░рдВрддрд░рддрд╛ рдкреНрд░рджрд╛рди рдХреИрд╕реЗ рдХреАред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рдХрд╛рд░реНрдп рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдмрд╣реБрднрд╛рд╖реА рдЖрднрд╛рд╕реА рдорд╢реАрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ - рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИред рд╣рдордиреЗ рдЕрд▓реАрдмрд╛рдмрд╛ JDK рдореЗрдВ рдЗрд╕ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХреАрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдХрдИ рдХреЛрд░рдЯрд╛рдЗрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреИрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЬрд┐рд╕ рдкреИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рд╡рд╣ рд╣рдореЗрдВ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдпреАрд▓реНрдбрдЯреЙ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдПрдХ рдХреЛрд░рдЯрд╛рдЗрди рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдХреЙрд░рдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд╣рдо рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрдИ рдЪреИрдирд▓ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдХреЛрдИ I / O рдИрд╡реЗрдВрдЯ (рд╕реЙрдХреЗрдЯ рдкрдврд╝рддрд╛ рд╣реИ, рд╕реЙрдХреЗрдЯ рд▓рд┐рдЦрдирд╛, рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрдЯ рдпрд╛ рд╕реЙрдХреЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛) рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ I / O рд▓реЙрдХ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрд░рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рддрд╕реНрд╡реАрд░ рдореЗрдВ рд╣рдо рд╕реЙрдХреЗрдЯ рдФрд░ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ client.read(buffer)
ред рд╕реНрд▓рд╛рдЗрдб рдХреЗ рдиреАрдЪреЗ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЪреИрдирд▓ рд╕реЗ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рд░реАрдб рдЗрд╡реЗрдВрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛрд░рдЖрдЙрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рд┐рдП рдХрд┐ рдРрд╕рд╛ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдзрд╛рдЧрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдиреБрд╕реВрдЪрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдзрд╛рдЧрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдХреЛрд░рдЯрд╛рдЗрди рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ-рд╕реЗ-рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рд╣реИрдВред рд╢реЗрдбрдпреВрд▓рд░ рд╣рдореЗрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ I / O рдЕрд╡рд░реБрджреНрдз рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЬрдм I / O рдИрд╡реЗрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдПрдХ рдЕрд▓рд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрдпреЛрдЬрди рдХреЗ рдмрд╛рдж, рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЕрдЧрд▓реЗ рдЙрдкрд▓рдмреНрдз рдХреЛрд░рдЯрд╛рдЗрди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред
рдЖрдЗрдП рдЕрдкрдиреЗ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ WispEngine рдХрд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрд▓рдЧ WispEngine рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдПрдХ coroutine рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо WispEngine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдИрд╡реЗрдВрдЯ (рд╕реЙрдХреЗрдЯ рд░реАрдб / рд░рд╛рдЗрдЯ рд╡рдЧреИрд░рд╣) рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдШрдЯрдирд╛рдПрдВ рдереНрд░реЗрдб рдкрд╛рд░реНрдХрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк 100 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде thread.sleep()
рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдереНрд░реЗрдб рдкрд╛рд░реНрдХрд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рддрдм рдЪрдпрдирдХрд░реНрддрд╛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╢реЗрдбреНрдпреВрд▓рд░ рдЕрдЧрд▓реЗ рдЙрдкрд▓рдмреНрдз рдХреЛрд░рдЯрд╛рдЗрди рдХреЛ рдирд┐рдпреБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рджреЛ рдореБрдЦреНрдп рд╢рд░реНрддреЗрдВ рд╣реИрдВред рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХреБрдЫ рдШрдЯрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ I / O рдЗрд╡реЗрдВрдЯ рдпрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЗрд╡реЗрдВрдЯред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк 200 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде thread.sleep()
рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рд╡реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рдкрд╛рд╕ рдЕрдЧрд▓реЗ рдЙрдкрд▓рдмреНрдз рдХреЛрд░рдЯрд╛рдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдпрд╣рд╛рдБ рд╣рдо рдХреБрдЫ object.notify()
рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд╣рддреА рд╣реИрдВ рдХрд┐, object.notify()
рдпрд╛ object.notifyAll()
рдХрд╣рдХрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рджреВрд╕рд░реА рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирдП рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ coroutine рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рддрдм sheduler рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕реЗрд╡рд╛, WispThreadExecutor рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд ExecutorService рд╣реИ, рдЙрд╕реА рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред .execute()
рдФрд░ submit()
рддрд░реАрдХреЗ .execute()
рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ submit()
рд╡рд┐рдзрд┐ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЛрд░рдЯреАрди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдереНрд░реЗрдб рдореЗрдВ рдирд╣реАрдВред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЛ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рдореИрдВ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрддрд┐рдо рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ - рдХреЛрд░рдЯрд╛рдЗрди рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрди рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ coroutine A ( test::foo
) рдФрд░ corutin
( test::bar
) рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо test:foo
рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдд рдХрд░рддреЗ рд╣реИрдВ test:foo
to coroutine
Corutin
wait()
рдХрд╣рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ wait()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдзрд╛рдЧрд╛ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ wait()
ред рдЬреИрд╕рд╛ рдХрд┐ рдзрд╛рдЧреЗ рдХреЗ рдЗрд╕ рдбрдВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЧрддрд┐рд░реЛрдз рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛, рдФрд░ рд╣рдо рдЕрдЧрд▓реЗ coroutine рдХреЛ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ? рд╣реЙрдЯрд╕реНрдкреЙрдЯ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдлрд╛рд╕реНрдЯ рд▓реЙрдХ рд╣реИред рдпрд╣рд╛рдВ рддрд╛рд▓рд╛ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдкрддреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░рдЖрдЙрдЯ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреИрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдлрд╛рд╕реНрдЯ рд▓реЙрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рдпрд╕реНрдб рд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рдЖрдЬрдорд╛рдпрд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрдХреНрд╖рдкрд╛рддреА рддрд╛рд▓рд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред

рдЪрд▓реЛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ - рдлреБрд▓рд╛рдпрд╛ рд╣реБрдЖ рддрд╛рд▓рд╛ред рдЖрдЗрдП рд╣рдо рдлрд┐рд░ рд╕реЗ рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Corutin
( .foo()
) рдФрд░ Corutin B
( .bar()
) рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреЛрд░рдЯрд╛рдЗрди
рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЗрд╕реЗ Object.wait
рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реВрдЪреА рдореЗрдВ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ: рд╣рдо yieldTo
рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЛрд░реБрдЯрд┐рди B
рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ B
рдпрд╣ Object.notify
рдХрд╣рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА unpark
рдШрдЯрдирд╛рдУрдВ unpark
рдХрд░ рд░рд╣реЗ unpark
ред рд╡реЗ рдЕрдВрддрддрдГ рдХреЛрд░рдЖрдЙрдЯ
рдЬрдЧрд╛рдПрдВрдЧреЗ
bar()
, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХреЛрд░рдЯрд╛рдЗрди
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЬрд┐рд╕ рдЧрддрд┐рд░реЛрдз рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЖрдЗрдП рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВред рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдСрдирд▓рд╛рдЗрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЙрд░рдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдирд┐рдпрдорд┐рдд JDK рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдХреЛрд░реБрдЯрд┐рди рдХреЗ рдХрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рд╣рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреА рдЦрдкрдд рдХреЛ рд▓рдЧрднрдЧ 10% рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рдкрд╛рд╕ рд╕реАрдзреЗ JDK рдХреЛрдб рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрдЯрд┐рд▓ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╣рд╛рдирд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдзрдирд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рд╣реЛрддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд░рд╛рд╢рд┐ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЖрдк рдХреЛрд░рдЯреАрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
JWarmup
рдЪрд▓рд┐рдП рдЕрдкрдиреЗ рджреВрд╕рд░реЗ рдЯреВрд▓ - JWarmup рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рд░реЗрдбреА рдиреЛрд╡ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╡рд╛рд░реНрдо-рдЕрдк рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╕рдВрдХрд▓рдХ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реАрдкреАрдпреВ рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реБрдИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯрд╛рдЗрдордСрдЙрдЯ рддреНрд░реБрдЯрд┐ рд╣реБрдИред рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - 20 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ 50 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо JWarmup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдиреЗ рдЧрд░реНрдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рдбреЗрдЯрд╛ рдкрд░, рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ JIT рд╕рдВрдХрд▓рдХ рдХреЛ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдирдХрд▓реА рдбреЗрдЯрд╛ рдЕрд╕рд▓реА рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХреГрддрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди JWarmup рдерд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдХреЗ рджреЛ рдореБрдЦреНрдп рдЪрд░рдг рд╣реИрдВ - рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдФрд░ рд╕рдВрдХрд▓рдиред рдЕрд▓реАрдмрд╛рдмрд╛ рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИрдВ, рдмреАрдЯрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрдиред рджреЛрдиреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдЗрди рджреЛ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреАрдЯрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрдХрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдЖрд░рдореНрднрд┐рдХ рд╣реИрдВ, рдХреМрди рд╕реЗ рддрд░реАрдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓реЙрдЧ рдореЗрдВ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИред рд╕рдмрд╕реЗ рдХрдард┐рди рдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рд╣реИредрдЗрд╕рдХрд╛ рдЖрджреЗрд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рд╕реНрд▓рд╛рдЗрдб рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреА рд╣реИ - Bar
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╡рд░реНрдЧ рдЖрд░рдВрднреАрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП Foo.test()
, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ foo.count
ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдЙрд╕ рд╕рдордп рдЖрд░рдВрднреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реЗ рд╣реЛ рдЪреБрдХреЗ рд╣реЛрддреЗ рд╣реИрдВред

JWarmup (tiered compilation), . , тАФ CPU. JWarmup , CPU, JDK. , , JDK. , , .
JWarmup. , , , groovy-, Java-, . . , , ┬лnull check elimination┬╗. . , JWarmup , JWarmup, .
, Alibaba.

. JVM тАФ , , . Java-, metaspace, VM ( VM) JIT-. OpenJDK. -, , . -, . HotMethodProfiling, , CPU. , , Honest Profiler , , , HotMethodProfiling. MethodTracing. , , . , metaspace . Java-, . metaspace , . Java.
, , ZProfiler.

. JVMTi, JVM ( ). , ZProfiler Apache Tomcat. -. ZProfiler JVM. , ZProfiler -UI, . ZProfiler . -, UI JVM. -, ZProfiler post-mortem . , OutOfMemoryError, , JVM ZProfiler, . , , , Eclipse MAT.
. . JVM, GCIH, Alibaba JDK, JWarmup тАФ , ReadyNow Zing JVM. , ZProfiler. , , OpenJDK. , , JWarmup OpenJDK. , OpenJDK Loom, Java. , .
. , , JPoint 2018 . 2019 , JPoint , 5-6 . , Rafael Winterhalter Sebastian Daschner. . , YouTube . JPoint!