рдЬрд╛рд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдУрд╡рд░рд░рди рдХреЛ рдХреИрд╕реЗ рд░реЛрдХреЗрдВ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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

рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдУрдЯрд╕реЛрд╡рд╕реНрдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рди рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╣рдорд╛рд░реЗ рд╢рд┐рдХреНрд╖рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!



рдЬреЗрдбреАрдХреЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╕реВрдЪреА рдФрд░ рдирдХреНрд╢реЗ рдХреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдбрд╝реЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ java.util.ArrayList , java.util.HashMap , рдЖрджрд┐ рдХреЗ рд╣рдЬрд╛рд░реЛрдВ рдпрд╛ рд▓рд╛рдЦреЛрдВ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рд╕рдВрдЧреНрд░рд╣ рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рд╕рдВрдЧреНрд░рд╣ рдореЗрдореЛрд░реА рдХрд╛ рдЗрд╖реНрдЯрддрдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд░реНрдордирд╛рдХ OutOfMemoryError рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд▓реАрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдВрдЧреНрд░рд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - java.util.ArrayList рд╡рд░реНрдЧред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ ArrayList Object[] elementData рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╕реВрдЪреА рдЖрдЗрдЯрдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм рдЖрдк рдбрд┐рдлреЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ ArrayList рдмрдирд╛рддреЗ рд╣реИрдВ, elementData , new ArrayList() рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, elementData рд╢реВрдиреНрдп рдЖрдХрд╛рд░ рдХреЗ рдЬреЗрдиреЗрд░рд┐рдХ рд╕рд░рдгреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ ( elementData рдХреЛ null рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд░реЗ рдХреБрдЫ рдорд╛рдореВрд▓реА рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред рдЬрдм рдЖрдк рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ elementData рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреВрдард╛ рд╕рд░рдгреА elementData , рдФрд░ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рдЗрд╕рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ 10 ("рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖рдорддрд╛") рдХреЗ рдмрд░рд╛рдмрд░ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рдЕрдм рдЗрд╕ ArrayList рддрддреНрд╡реЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ elementData рд╕рд░рдгреА рдореЗрдВ 10 рдореЗрдВ рд╕реЗ 9 рд╕реНрд▓реЙрдЯ рдЦрд╛рд▓реА рд░рд╣реЗрдВрдЧреЗред рдФрд░ рднрд▓реЗ рд╣реА рдЖрдк рд╕реВрдЪреА рдХреЛ рд╕рд╛рдл рдХрд░ рджреЗрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдПрдХ рдЪрд┐рддреНрд░ рд╣реИ:



рдпрд╣рд╛рдБ рдХрд┐рддрдиреА рд╕реНрдореГрддрд┐ рдмрд░реНрдмрд╛рдж рд╣реБрдИ рд╣реИ? рдкреВрд░реНрдг рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕рдХреА рдЧрдгрдирд╛ (рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЖрдХрд╛рд░) рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдк JVM HotSpot (рдЬреЛ Oracle JDK рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдзрд┐рдХрддрдо рд╣реАрдк рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП https://blog.codecentric.de/en/2014/02/35gb-heap-less- рджреЗрдЦреЗрдВ 32 рдЬреАрдмреА-рдЬрд╛рд╡рд╛-рдЬреЗрд╡реАрдПрдо-рдореЗрдореЛрд░реА-рд╡рд┐рд╖рдорддрд╛рдПрдВ / )ред рдЖрдорддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк -Xmx 32 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдХрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрдЧрд╛; рдмрдбрд╝реЗ рдвреЗрд░ рдХреЗ рд▓рд┐рдП - 8 рдмрд╛рдЗрдЯреНрд╕ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ ArrayList , рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднрд┐рдХ, рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрд╛ рддреЛ 36 рдпрд╛ 72 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдмрд░реНрдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЦрд╛рд▓реА ArrayList рдореЗрдореЛрд░реА ArrayList рднреА рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╡рд╣рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ArrayList рдХрд╛ рдЖрдХрд╛рд░ рд╕реНрд╡рдпрдВ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЙрд╕рд╕реЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдУрд░, рд╣реЙрдЯрд╕реНрдкреЙрдЯ JVM рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ 12- рдпрд╛ 16-рдмрд╛рдЗрдЯ рд╣реИрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрддрд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП JVM рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдЧреНрд░рд╣ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ size рдлрд╝реАрд▓реНрдб, рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА рдпрд╛ рдЕрдиреНрдп "рд╡рд░реНрдХрд▓реЛрдб рдореАрдбрд┐рдпрд╛" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ modCount , рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ modCount рдлрд╝реАрд▓реНрдб, рдЖрджрд┐ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдЫреЛрдЯреА рд╕рдВрднрд╡ рд╡рд╕реНрддреБ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕реНрдореГрддрд┐ рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ред рдХреБрдЫ, рдЬреИрд╕реЗ ConcurrentHashMap , рдХреБрдЫ рдЕрдзрд┐рдХред

рдПрдХ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - java.util.HashMap рд╡рд░реНрдЧред рдЗрд╕рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ ArrayList рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА-рд╡реИрд▓реНрдпреВ рдкреЗрдпрд░ рд╡рд╛рд▓реА рдПрдХ HashMap рд╕рд░рдгреА рдХреА 15 рдЖрдВрддрд░рд┐рдХ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рддреА рд╣реИ, рдЬреЛ 60 рдпрд╛ 120 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдпреЗ рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдЯреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рд╣рд╛рдирд┐ рдХреА рд╕реАрдорд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди-рд╕реЛрд░реНрд╕ Hadoop рдХреЗ рдХреБрдЫ рдШрдЯрдХ, рдЬрд┐рдирдХрд╛ рд▓реЗрдЦрдХ рдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдвреЗрд░ рдХрд╛ рд▓рдЧрднрдЧ 20 рдкреНрд░рддрд┐рд╢рдд рдЦреЛ рджреЗрддреЗ рд╣реИрдВ! рдХрдо рдЕрдиреБрднрд╡реА рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд┐рдпрдорд┐рдд рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рд╕реНрдореГрддрд┐ рд╣рд╛рдирд┐ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкреЗрдбрд╝ рдореЗрдВ 90% рдиреЛрдбреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдпрд╛ рджреЛ рд╡рдВрд╢рдЬ (рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ) рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬрд╣рд╛рдВ рдвреЗрд░ 0-, 1- рдпрд╛ 2-рддрддреНрд╡ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдпрд╛ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ? рдиреАрдЪреЗ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╕рдВрдЧреНрд░рд╣ рдПрдХ ArrayList рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб Foo.list рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рд╕реВрдЪреА рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрд▓рд╕реНрдпрдкреВрд░реНрд╡рдХ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рддреЛ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рдХреЛрдб рджрд┐рдЦрддрд╛ рдерд╛ ...

 void addToList(Object x) { list.add(x); } 

... рдЬреИрд╕рд╛ рдХреБрдЫ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП

 void addToList(Object x) { getOrCreateList().add(x); } private list getOrCreateList() { //   ,         if (list == null) list = new ArrayList(); return list; } 

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

 private Map getOrCreateMap() { if (map == null) { //,       synchronized (this) { if (map == null) map = new ConcurrentHashMap(); } } return map; } 

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

 list = new ArrayList(4); //       4 

рдпрджрд┐ рдЖрдкрдХреЗ рд╕рдВрдЧреНрд░рд╣ рдЦрд╛рд▓реА рд╣реИрдВ рдпрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ (рдпрд╛ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА) рд╣реИ, рддреЛ рдЖрдк рдЕрдиреБрдХреВрд▓рди рдХреЗ рдПрдХ рдЪрд░рдо рд░реВрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рдВрдЧреНрд░рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рдкреНрд░рдмрдВрдзрд┐рдд рд╣реЛ, рдЕрд░реНрдерд╛рдд, рдЕрдиреНрдп рдХреЛрдб рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рд╕реЗ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░, рддрд╛рдХрд┐ рдЕрдм рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдпрд╛ рд╕реАрдзреЗ рдХрд┐рд╕реА рдПрдХрд▓ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХреЗред рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд░реНрдгрди рд╣реИ:

 // ***   *** private List<Foo> list = new ArrayList<>(); void addToList(Foo foo) { list.add(foo); } // ***   *** //   ,    null.      , //      .       //   ArrayList. private Object listOrSingleEl; void addToList(Foo foo) { if (listOrSingleEl == null) { //   listOrSingleEl = foo; } else if (listOrSingleEl instanceof Foo) { //  Foo firstEl = (Foo) listOrSingleEl; ArrayList<Foo> list = new ArrayList<>(); listOrSingleEl = list; list.add(firstEl); list.add(foo); } else { //      ((ArrayList<Foo>) listOrSingleEl).add(foo); } } 

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

рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗ: рдореБрдЭреЗ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рддрдирд╛?

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

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

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

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

JXRay рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдУрд╡рд░рд╣реЗрдб рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдмрдЪрд╛рдПрдВрдЧреЗ) рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдвреЗрд░ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ ...



... рдФрд░ рдлрд┐рд░ рд╕рдорд╕рд╛рдордпрд┐рдХ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЛ рдПрдХ рд╣реА рд▓рд┐рдВрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдХреБрдЫ рд░реВрдЯ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ



рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХреМрди рд╕реА рд▓рд┐рдВрдХ рдЪреЗрди рдФрд░ / рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, INodeDirectory.children рдКрдкрд░) рдРрд╕реЗ рд╕рдВрдЧреНрд░рд╣ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдирдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдореЛрд░реА рдХреЛ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХреА рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рдЯреАрдХ рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИред

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

рдЕрдВрдд

рд╣рдо, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдкрдХреА рд░рд╛рдп рдФрд░ рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдЦреБрд▓реЗ рд╕рдмрдХ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╢рд┐рдХреНрд╖рдХреЛрдВ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles