рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ .Net рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛,
рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рди, рдФрд░
mynameco рдХреЙрдорд░реЗрдб рдХреА рдкрд░рдВрдкрд░рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ
рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛
рдпрд╣ рдкреЛрд╕реНрдЯ kulhackers рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдиреНрдпреВрдорд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдХреЙрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрдВрдкрд╛рдЗрд▓
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрд┐ рдлрд╝рд╛рд░реНрдЪ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ
рдЧреЗрдЯрдиреБрдорд░реЗрдЯрд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд╛рд▓реЗ рдПрдиреНрдпреВрдорд░реЗрдЯрд░ рдХреЛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдиреНрдпреБрдореЗрдЯрд░ рд╕реНрд╡рдпрдВ рд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реЛрддрд╛ рд╣реИ ) рд╕рдВрд░рдЪрдирд╛, рдЬреЛ рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдмрдЧ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ ... рдлрд┐рд░, рдХреГрдкрдпрд╛ рдЕрдВрджрд░ рди рдЬрд╛рдПрдВ рдФрд░ рдкрдврд╝реЗрдВ, рдЕрдкрдирд╛ рд╕рдордп рдмрдЪрд╛рдПрдВ, "рдХреЗрдЬреА \", "рдмреЙрдпрдиреНрд╕" рдФрд░ "рдХреИрдкреНрдЯрди рдУрдЯрдХреЗ" рдЬреИрд╕реЗ рдкрджреЛрдВ рдХреЛ рди рдЫреЛрдбрд╝реЗрдВред рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред
рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди .Net рдореЗрдВ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдП рдЗрд╕ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдВ:
рдЬрдм рдЖрд╡реЗрджрди рдмрд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рддрдерд╛рдХрдерд┐рдд
рдЬреАрд╕реА рдЬрдбрд╝реЗрдВ рдЗрд╕рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдЬрдбрд╝реЛрдВ рдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзрд╛рдЧрд╛ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ
, рдЬреЛ рдЬреАрд╕реА рдЬрдбрд╝реЛрдВ рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ
рд╣реИрдВ (рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдлрд┐рд▓рд╣рд╛рд▓ рдЬрдбрд╝реЛрдВ рд╕реЗ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХреЗрдЧрд╛) "рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ" рдХреЗ рд░реВрдк рдореЗрдВ (рдЪрд┐рддреНрд░ рдореЗрдВ 9 рдФрд░ 10 рдиреЛрдбреНрд╕)ред рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдпрд╛
GC.Collect рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рддреА рд╣реИ, рддреЛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╕реНрд╡рдпрдВ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ?
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐
рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрддрдирд╛ рд╕рд░рд▓ рд╡рд░реНрдЧ рд╣реИ:
public class SomeClass { public int I; public SomeClass(int input) { I = input; Console.WriteLine("I = {0}", I); } ~SomeClass() { Console.WriteLine("deleted"); } public void Foo() { Thread.Sleep(1000); Console.WriteLine("Foo"); } }
рдФрд░ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╣реЗрдВрдЧреЗ:
public class Program { private static void Main() { new Thread(() => { Thread.Sleep(100); GC.Collect(); }) {IsBackground = true}.Start(); new SomeClass(10).Foo(); } }}
рдереНрд░реЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрднрд╡ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╣рдЯрд╛ рджреЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЬреАрд╕реА рдХреЛ рдирд╣реАрдВ рдЫреВрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рди рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡реЗ рдмрд╣реБрдд рд╣реА рдмреЗрд╡рдХреВрдл рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдФрд░
GC.Collect рд╡рд┐рдзрд┐ рдХрд╛ рдореИрдиреБрдЕрд▓ рдХреЙрд▓ рдХреЗрд╡рд▓ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛):

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреЗрд╢рдХ, рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд╕реАрдПрд▓рдЖрд░ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдбреАрдПрд▓рдЖрд░) рдХреЛ рдЗрд╕ рд╕рдордп рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ!
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд▓рд┐рдВрдХ, рдЬреЛ рдХрд┐ рдмрд╛рдХреА рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ, CIL рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛
рдХреЙрд▓рд╡рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛
рд╣реИ рдЬрдм рдПрдХ рд╕рд╛рдзрд╛рд░рдг
рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ),
рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
C # рдореЗрдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ: рд╕рддреНрдп рдпрд╛ рдорд┐рдердХ?
рд╣рд╛рдБ рдФрд░ рдирд╣реАрдВред рдПрдХ рддрд░рдл, рд╡реЗ рд╕реА ++ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ (рдФрд░ рдПрдХ рд╣реА рдЖрдЗрдХрди - рдЯрд┐рд▓реНрдбреЗ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП) рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рдкрд╛рд╕
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИрдВ ,
рдирд┐рдЬреА рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп)ред рдЗрд╕рд▓рд┐рдП, рд╕реА # рдореЗрдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрдзрд┐рдХ рдмрд╛рд░ рдлрд╛рдЗрдирд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╢реНрд░реЛрддрд╛рдУрдВ рд╕реЗ рд╕рд╡рд╛рд▓: рдлрд┐рд░ рдХреНрдпреЛрдВ рдбрд┐рд╕рдкреЛрдЬ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИрдВ рдЕрдЧрд░ C # рдореЗрдВ рдРрд╕реЗ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ C ++ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рд╕реЗ рдмрджрддрд░ рдирд╣реАрдВ рд╣реИрдВ?рдЕрд░реНрдореЗрдирд┐рдпрд╛рдИ рд░реЗрдбрд┐рдпреЛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ: рд╕рдорд╕реНрдпрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рд╡рд╕реНрддреБ рдХреЛ рджреЛ рдкрд╛рд╕реЛрдВ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдкрд╣рд▓рд╛, рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ (рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ), рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддрдерд╛рдХрдерд┐рдд "рдорд┐рдбрд▓рд╛рдЗрдлрд╝ рд╕рдВрдХрдЯ" рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИ - рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реА рд╡рд╕реНрддреБрдПрдВ рджреВрд╕рд░реА (рдЕрдВрддрд┐рдо) рдкреАрдврд╝реА рдореЗрдВ рдЧрд┐рд░рддреА рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрд▓реЗрдХреНрдЯрд░ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рдкреАрдврд╝реА рдХреА рдорд╛рдирдХ рд╕рдлрд╛рдИ рдХреЗ рдмрдЬрд╛рдп, рд╡рд╣
рд╕рднреА рд╕реНрдореГрддрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдКрдкрд░ рд▓рд┐рдВрдХ рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдкреНрддрд╛рди рдХреЗ рдЦреБрд▓рд╛рд╕реЗ рдХреЗ рд╕рд╛рде рд▓рдВрдмреА рдЪрд╛рджрд░реЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрд┐рд╕реА рдХреЛ рдкрд╕рдВрдж рдЖрддреА рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдИрдбреАрдЖрдИрд╕реЛрдлрд╝рд╛рдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝рд░ (рд╕реБрд░рдХреНрд╖рд╛ "рдореВрд░реНрдЦ рдХреЗ рд╡рд┐рд░реБрджреНрдз") рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public virtual void Close() // Stream { this.Dispose(true); GC.SuppressFinalize((object) this); } public void Dispose() { this.Close(); } /// <summary> /// , , FileStream. /// </summary> [SecuritySafeCritical] ~FileStream() { if (this._handle == null) return; this.Dispose(false); }
рдФрд░ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ?
рдФрд░ рдЕрдм, рдлрд╛рдЗрдирд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рд╕реЗ рд▓реИрд╕, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рдкреБрдирд░реБрддреНрдерд╛рди" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
рд╣рдо рдлрд╛рдЗрдирд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
~SomeClass() { Console.WriteLine("deleted"); Program.SomeClassInstance = this; GC.ReRegisterForFinalize(this); }
рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ
public class Program { public static SomeClass SomeClassInstance; private static void Main() { new Thread(() => { Thread.Sleep(100); GC.Collect(); }) {IsBackground = true}.Start(); var wr = new WeakReference(new SomeClass(10)); Console.WriteLine("IsAlive = {0}", wr.IsAlive); ((SomeClass)wr.Target).Foo(); Console.WriteLine("IsAlive = {0}", wr.IsAlive); } }
рдЕрдм, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдВрддрд╣реАрди рдореБрджреНрд░рд┐рдд рд▓рд╛рдЗрди рд╣рдЯрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рдЬреНрдЮрд╛рдкрди infinitum рдкрд░ ...
(3 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП aegis рдХреЗ рд╕рд╛рде рдХрдВрдХрд╛рд▓ King'a рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ :))
рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝рд░ рдХреЛ рдХрднреА рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧреИрд░-рдХреЛрд╖реЗрд░ рддрд░реАрдХреЗ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдИрдбреА рдкреНрд▓рд╕ рдкреНрд░рдпреЛрдЬреНрдп рдкрд┐рдЧреА рдмреИрдВрдХ рдореЗрдВ)ред рд▓реЗрдХрд┐рди рдХрд┐рди рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рдлрд╝рд╛рдЗрдирд▓рдЬрд╝рд░ рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдЯрдм рд╡рд┐рдзрд┐ рд╣реЛрдЧреА (рд╡рд┐рдзрд┐ рдХреЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп рдХрд╛ рд╕рдВрдХрд▓рди)ред рдлрд┐рд░, рдпрджрд┐ рдПрдХ рдареАрдХ рдХреНрд╖рдг рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд╛рдЗрдирд▓ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ JIT рдХреЗ рдкрд╛рд╕ рд╕реНрдЯрдм рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдлрд╛рдЗрдирд▓ рдХреЗ рдХреЛрдб рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реЛрдЧреА ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдлрд╛рдЗрдирд▓ рдХреЛ рджреЛ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдВ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реА рдЕрдВрддрд┐рдо рдХрддрд╛рд░ рдХреЛ 40 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреЛрдбрд╝рдирд╛
рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдлрд╝рд╛рдЗрдирд▓рд╛рдЗрдЬрд╝рд░рдСрдмрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ C # рдореЗрдВ рдХреЛрдИ рдмрд╣реБ рд╡рд┐рд░рд╛рд╕рдд рдирд╣реАрдВ рд╣реИ (рдЗрдВрдЯрд░рдлреЗрд╕ "рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ", рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛), рдпрд╣ рдХреЛрдИ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИред рдпрджреНрдпрдкрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдПрдХ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдПрдХ рддрд░рдл, рдЗрд╕ рд╕рдм рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рджреВрд╕рд░реА рдУрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рддрд░рдл, рдореИрдВрдиреЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рджреВрд╕рд░реА рддрд░рдл, рдореИрдВрдиреЗ рдЙрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдкреНрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдерд╛ред рдХреНрдпрд╛ рд╣реБрдЖ, рдЖрдк рддрдп рдХреАрдЬрд┐рдПред
рдлрд╛рдЗрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рдЯрд┐рдк:
- рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдИрдбреАрд╕реЛрдлрд╝рд░реЗрдмрд▓ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдирд┐: рд╢реБрд▓реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рдкрдЯрд╛рди рд╡рд┐рдзрд┐ рдореЗрдВ
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдирд┐рдкрдЯрд╛рди рдХреЛ рдмреБрд▓рд╛рдПрдЧрд╛ред рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЭреВрд▓рддреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдлрд╛рдЗрдирд▓
- рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдореЗрдВ, GC.SuppressFinalize (рдпрд╣) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ ; ред рдпрд╣ рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рд╡рд╛рд▓реА рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдиреНрдпреВрдирддрдо рд╣реЛрдЧрд╛, рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЙрдорд░реЗрдб
рдореЗрдпрд░реЛрд╡рдк рдиреЗ рд╕рд╣реА рдХрд╣рд╛ рдерд╛
рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЛ SafeHandle рдпрд╛ CriticalHandle рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЖрд░рдВрдн рдХреЗ рджреМрд░рд╛рди AppDomain рдХреЛ рдЙрддрд╛рд░рдиреЗ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред
рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╡рд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрди рдЖрд╡рд░рдгреЛрдВ рдореЗрдВ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ рд╢рдмреНрджрд╛рд░реНрде / рд╡рд░реНрддрдиреА / рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди / рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ / рд╢рдмреНрджрд╛рд░реНрде / рд░реВрдкрд╛рддреНрдордХ рдФрд░ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдХреЛрдИ рднреА рдЯрд┐рдкреНрдкрдгреА рд╕реНрд╡реАрдХрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИред