рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рддреАрди рдкреНрд░рдХрд╛рд░

рдирдорд╕реНрдХрд╛рд░ рд╕рд╛рдерд┐рдпреЛрдВ!

рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░ рдЯрд╛рдЗрдорд▓реЗрд╕ рдмреЗрд╕реНрдЯ-рд╕реЗрд▓рд┐рдВрдЧ рдХрд┐рддрд╛рдмреЛрдВ рдХреА рд╣рдорд╛рд░реА рд▓рдВрдмреА рдЦреЛрдЬ рд╕реЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдХрд┐ рдмреЗрди рд╡реЙрдЯрд╕рди рдХреА рдкреМрд░рд╛рдгрд┐рдХ рдкреБрд╕реНрддрдХ " рд░рд╛рдЗрдЯрд┐рдВрдЧ рд╣рд╛рдИ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ .NET рдХреЛрдб " рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЕрднреА рдкреВрд░рд╛ рд╣реБрдЖ рд╣реИред рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ - рдЕрдкреНрд░реИрд▓ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ, рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

рдФрд░ рдЖрдЬ рд╣рдо рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджрдмрд╛рд╡ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдкрд░ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдиреЗрд▓реНрд╕рди рдЗрд▓реНрд╣рд┐рджреНрдЬрд╝реЗ (рд╕реНрдЯреНрд░рд╛рдЗрдХ) рдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ред

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

рдкреНрд░рдХрд╛рд░ (1): рдЕрдиреБрдкрд▓рдмреНрдз рд╕реНрдореГрддрд┐ рдЦрдВрдб рдЖрд╡рдВрдЯрд┐рдд

рдпрд╣ C / C ++ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реИред рдХрд┐рд╕реА рдиреЗ new рдпрд╛ malloc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрдореЛрд░реА рдХреЛ рдлреНрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдХреЙрд▓ рдпрд╛ delete рдирд╣реАрдВ рдХрд┐рдпрд╛ред

 void leak_memory() { char *leaked = malloc(4096); use_a_buffer(leaked); /* ,   free() */ } 

рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдЗрд╕ рд╢реНрд░реЗрдгреА рдХрд╛ рд╣реИ

  • рдпрджрд┐ рдЖрдк C рдпрд╛ C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ C ++ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдЬреАрд╡рди рдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреЛ рдпрд╣ рд╡рд╣ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдЪрд░реЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рд┐рд╕рд╛рд╡ рджреЗрд╢реА рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдХрд╕рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓реАрдХ (2) рдФрд░ (3) рдХреЛ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдРрд╕реЗ рд▓реАрдХ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛рдП

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

рдЯрд╛рдЗрдк (2): рдЕрдирд┐рдпреЛрдЬрд┐рдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди

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

  • рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рд╛рдЬреНрдп рдХрд╛ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрдЪрдп; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рд╕рд░реНрд╡рд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ Request рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИред
  • рдПрдХ рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рдЕрдкреНрд░рдЪрд▓рди рдиреАрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдХреИрд╢ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ ORM рдХреИрд╢ рдЬреЛ рд╣рд░ рдПрдХ рд▓реЛрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдмрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВред
  • рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреНрд╡рд╛рд▓рд╛рдореБрдЦреА рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣ рдорд╛рдорд▓рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрде рдореЗрдВ, рдХрд┐рд╕реА рд╕рд░рдгреА рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рдЕрдирдЬрд╛рдиреЗ рдкреНрд░рддрд┐рдзрд╛рд░рдг, рдЬрдмрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдЗрд╕ рд╢реНрд░реЗрдгреА рдХрд╛ рд╣реИ

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

рдРрд╕реЗ рд▓реАрдХ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛рдП

рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрдлрд╛рдЗрд▓рд░реНрд╕ рдпрд╛ рд╣реАрдк рдбрдВрдк рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд░реВрдмреА рдореЗрдВ рдкрд╛рдпрдерди рдпрд╛ рдореИрдореЛрд░реА_рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдореЗрдВ рдЧрдкреНрдкреА рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд░реВрдмреА рдореЗрдВ рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдкреЗрд╕ рднреА рд▓рд┐рдЦрд╛ рдерд╛ред

рдкреНрд░рдХрд╛рд░ (3): рдореБрдХреНрдд рд▓реЗрдХрд┐рди рдЕрдкреНрд░рдпреБрдХреНрдд рдпрд╛ рдЕрдиреБрдкрдпреЛрдЧреА рд╕реНрдореГрддрд┐

рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдФрд░ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреЗ рдПрдХ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 import sys from guppy import hpy hp = hpy() def rss(): return 4096 * int(open('/proc/self/stat').read().split(' ')[23]) def gcsize(): return hp.heap().size rss0, gc0 = (rss(), gcsize()) buf = [bytearray(1024) for i in range(200*1024)] print("start rss={} gcsize={}".format(rss()-rss0, gcsize()-gc0)) buf = buf[::2] print("end rss={} gcsize={}".format(rss()-rss0, gcsize()-gc0)) 

рд╣рдо 200,000 1-рдХреЗрдмреА рдмрдлрд╝рд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдореЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВред рд╣рд░ рд╕реЗрдХрдВрдб, рд╣рдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рдпрдерди рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореЗрдореЛрд░реА рд╕реНрдЯреЗрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░, рдореБрдЭреЗ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

start rss=232222720 gcsize=11667592
end rss=232222720 gcsize=5769520


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

рд╕реНрдореГрддрд┐ рдХреЗ рдРрд╕реЗ рдореБрдХреНрдд рд▓реЗрдХрд┐рди рдЕрдкреНрд░рдпреБрдХреНрдд рдЯреБрдХрдбрд╝реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдФрд░ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ 1kb рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЖрд╡рдВрдЯрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рди рдмрд╕ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рд╣рдордиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдмрд╛рдж рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдЯреБрдХрдбрд╝реЗ 1.5kb рд╣реИрдВ рдФрд░ рдЗрди рдмрдлрд╝рд░реНрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕рднреА рдореЗрдореЛрд░реА рд╣рдореЗрд╢рд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣реЗрдВрдЧреА рдмрд░реНрдмрд╛рдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд░реВрдмреА рдпрд╛ рдкрд╛рдЗрдерди рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕ рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ:

  • рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд░, рдПрди рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП N = 10 рд▓реЗрддреЗ рд╣реИрдВред
  • рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рд╕реНрдерд┐рд░ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИред рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП 500MB рд▓реЗрдВред
  • рдХреБрдЫ рдХрдо рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдзреНрдпрд┐рдХрд╛ рдЕрдиреБрд░реЛрдз рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд 1GB рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЗрдореЛрд░реА рдлрд╝реНрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╕рд┐рдЯрд╛рд╕рд┐рдпрди" рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╣рдо 10 рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ: ~random ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ 1 рдЬреАрдмреА рд░реИрдо рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХрд╛рдо рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓реМрдЯрд╛рдПрдВ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдХреЛ рдХреЗрд╡рд▓ 10 * 500MB + 1GB = 6GB RAM рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

рдЬрдм рдЖрдк рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ 10 * 500MB = 5GB рд╣реИред рдЬреИрд╕реЗ рд╣реА рдкрд╣рд▓рд╛ рдмрдбрд╝рд╛ рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ 1GB рдореЗрдореЛрд░реА рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ 6GB рддрдХ рдмрдврд╝ рдЬрд╛рдПрдЧреАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХрднреА-рдХрднреА рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ "рд╡реНрд╣реЗрд▓" рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рдерд╛, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧреАред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЗрддрдиреЗ рдмрдбрд╝реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореЗрдореЛрд░реА рдХреЛ 1GB рдХреЗ рд▓рд┐рдП рдФрд░ рдлреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рддрдм рддрдХ рдЬрдм рддрдХ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рди рд╣реЛред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде 10 * (500MB + 1GB) = 15GB RAM рд▓реЗрдВрдЧреЗ, рдЬреЛ рдЖрджрд░реНрд╢ 6GB рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдмреЗрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдзреАрд░реЗ-рдзреАрд░реЗ 5GB рд╕реЗ 15GB рддрдХ рдХреИрд╕реЗ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдПрдХ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд▓реАрдХ рдХреА рдмрд╣реБрдд рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред

рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдЗрд╕ рд╢реНрд░реЗрдгреА рдХрд╛ рд╣реИ

  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдореБрдХреНрдд рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдЖрдБрдХрдбрд╝реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдвреЗрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрджрд┐ рд░рд┐рд╕рд╛рд╡ рдЗрд╕ (рддреГрддреАрдп) рд╢реНрд░реЗрдгреА рдХрд╛ рд╣реИ, рддреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред
  • рдореИрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдореЗрд░реА рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВ, рдЗрд╕рд▓рд┐рдП рдЙрди рдкрд░ рд░реЗрдЦрд╛рдВрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
  • рд▓рд┐рдирдХреНрд╕ рдкрд░, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ 24 /proc/self/stat рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЗрдЦреЗрдВ, рдФрд░ рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ рджреЗрдЦреЗрдВред

рдРрд╕реЗ рд▓реАрдХ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛рдП

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

  • рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рддреА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рд░ 15 рдорд┐рдирдЯ рдпрд╛ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдПрдХ рдмрд╛рд░ рд╕рднреА рдЖрд╡реЗрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдПрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рджреГрд╖реНрдЯрд┐рдХреЛрдг: рдЖрдк рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣реА рд╡реЗ рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреВрд░реНрд╡рд╛рднрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдкреВрд░рд╛ рдмреЗрдбрд╝рд╛ рдПрдХ рд╕рд╣рдЬ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ рдмрджрд▓реЗрдВред рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ, tcmalloc рдФрд░ jemalloc рдЖрдо рддреМрд░ рдкрд░ рд╡рд┐рдЦрдВрдбрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ LD_PRELOAD рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред
  • рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬреЛ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд╛рдЗрдк рдкрд░, рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдбреЗрд▓реНрдЯрд╛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдирд┐рд░рдВрддрд░ рдореЗрдореЛрд░реА рдЦрдкрдд) рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВред рдлрд┐рд░, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдПрдХрддреНрд░реАрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдФрд░ рдкреИрдЯрд░реНрди) рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЗ рдлрдЯрдиреЗ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ / рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдХреЛ рдХреИрд╕реЗ рд▓реМрдЯрд╛рдПрдЧрд╛, рд╡рд┐рдЦрдВрдбрди рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ; рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рднреА рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдорд╛рдк рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреБрдХреНрдд рдЖрднрд╛рд╕реА рдорд╢реАрди рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

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


All Articles