рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, .NET рдореЗрдореЛрд░реА рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ: рд╕реНрдЯреИрдХ (рд╕реНрдЯреИрдХ) рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рд╣реАрдк (рдкреНрд░рдмрдВрдзрд┐рдд рд╣реАрдк, рдлрд┐рд░ рдмрд╕ рдПрдХ рдвреЗрд░)ред рд╕реНрдЯреИрдХ рдкрд░ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ (ObjectInstance) рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ (ObjectRef) рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдвреЗрд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рдЖрд▓реЗрдЦ рдвреЗрд░ рдкрд░ рд╡рд╕реНрддреБ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдХреЛ рдЗрд╕рдХрд╛ рдЬреНрдЮрд╛рди рд╣реИ:
1. рдвреЗрд░
2. рдвреЗрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛
3. рдЬреАрд╕реА
4. рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн
ObjectInstance
ObjectInstance -
ObjectRef рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ (рдСрдмреНрдЬреЗрдХреНрдЯ)ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
1. рдзрд╛рдЧреЗ рдХреЗ рдвреЗрд░ рдореЗрдВ
2. рдЬреАрд╕реА рд╣реАрдк рдореЗрдВред
рдЙрдирдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1. рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рд╣реАрдк (рдЖрдХрд╛рд░ рдореЗрдВ 85000 рдмрд╛рдЗрдЯ рддрдХ рдХреА рд╡рд╕реНрддреБрдПрдВ)
2. рд▓рд╛рд░реНрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реАрдк рдореЗрдВ (85,000 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдмрдбрд╝реА рд╡рд╕реНрддреБрдПрдВ)
рдЪрд┐рддреНрд░ 1. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгрдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 1 рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, ObjectInstance рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
1. рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░
2. рдЯрд╛рдЗрдк рд╣реИрдВрдбрд▓ (рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ)
3. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХреНрд╖реЗрддреНрд░
4. рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЯрд░рд▓ рдХреЗ рд▓рд┐рдВрдХ
рд╡рд╕реНрддреБ рд╢реАрд░реНрд╖рдХ
рдЖрдЗрдП рдЪрд┐рддреНрд░ 1 рдкрд░ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, ObjectRef рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ 4 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдСрдлрд╕реЗрдЯ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЗрдбрд░ рдореЗрдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдХреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рд┐рдВрдХ рдмреНрд▓реЙрдХ рдПрдВрдЯреНрд░реА рдЯреЗрдмрд▓ рдореЗрдВ рд╕реЗрд▓ рдирдВрдмрд░ рд╣реЛрддрд╛ рд╣реИред рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдерди рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдпрд╛ GetHashCode () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ 0 рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░ рд╕реЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рд╕рд┐рдВрдХ рдмреНрд▓реЙрдХ рдПрдВрдЯреНрд░реА рдЯреЗрдмрд▓ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрдЗрдиреНрд╕реНрдЯреИрдХреНрд╢рди рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕реАрдПрд▓рдЖрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
рд╕рд┐рдВрдХ рдмреНрд▓реЙрдХ рдПрдВрдЯреНрд░реА рдЯреЗрдмрд▓ рдХреА рд╕реЗрд▓, рдЬрд┐рд╕рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдмрджрд▓реЗ рдореЗрдВ, рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реАрдПрд▓рдЖрд░ рдЗрд╕ рд╕реЗрд▓ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕реЗрд▓ рдореЗрдВ рд╕рд┐рдВрдХрдмреНрд▓реЙрдХ рд╕реВрдЪреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рд┐рдВрдХрдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИред рд╕рд┐рдВрдХрдмреНрд▓реЙрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:
1. рдереБрдВрдХрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА
2. AppDomain Index
3. рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХ рдбреЗрдЯрд╛
4. рд╣реИрд╢ рдХреЛрдб
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджрд╛рди рдХреЛрдб:
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
class Sample { TestClass sync = new TestClass (); void Main() { lock (sync) { //, } sync.GetHashCode(); } } * This source code was highlighted with Source Code Highlighter .
рдкрдВрдХреНрддрд┐ 3 рдореЗрдВ, рд╕рд┐рдВрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд╛рди 0 рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдкрдВрдХреНрддрд┐ 7 рдореЗрдВ, рдлрд╝реАрд▓реНрдб рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреИрд░-рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ CLR SyncBlock рд▓рд┐рд╕реНрдЯ рдореЗрдВ SyncBlock рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рдбрд╛рд▓рддрд╛ рд╣реИред рдкрдВрдХреНрддрд┐ 11 рдкрд░, рд╣реИрд╢ рдорд╛рди рдХреЛ рд╕рд┐рдВрдХрдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рд┐рдВрдХрдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдлрд╝реАрд▓реНрдбреНрд╕ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ
рдЯрд╛рдЗрдк рд╣реИрдВрдбрд▓ рдХреЗ рдкреАрдЫреЗ рдЙрджрд╛рд╣рд░рдг рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдЕрд▓рдЧ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдореГрддрд┐ рдХрд╛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЦреЗрддреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдХрдо рд╕реЗ рдХрдо рд╣реЛред
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1 рдореЗрдВ рд╕рд┐рдВрдкрд▓рдХреНрд▓рд╛рд╕ рд╡рд░реНрдЧ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1 |
- рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдкрд▓рдХреНрд▓рд╛рд╕
- {
- рдирд┐рдЬреА рдмрд╛рдЗрдЯ b1 = 1; // 1 рдмрд╛рдЗрдЯ
- рдирд┐рдЬреА рдмрд╛рдЗрдЯ b2 = 2; // 1 рдмрд╛рдЗрдЯ
- рдирд┐рдЬреА рдмрд╛рдЗрдЯ b3 = 3; // 1 рдмрд╛рдЗрдЯ
- рдирд┐рдЬреА рдмрд╛рдЗрдЯ b4 = 4; // 1 рдмрд╛рдЗрдЯ
- рдирд┐рдЬреА рдЪрд╛рд░ c1 = 'рдП' ; // 2 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА рдЪрд╛рд░ c2 = 'B' ; // 2 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА рд▓рдШреБ s1 = 11; // 2 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА рд▓рдШреБ s2 = 12; // 2 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА int i1 = 21; // 4 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА рд▓рдВрдмреА l1 = 31; // 8 рдмрд╛рдЗрдЯреНрд╕
- рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ str = "MyString" ; // 4 рдмрд╛рдЗрдЯреНрд╕ (рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ OBJECTREF рд╣реИ)
- // рдЙрджрд╛рд╣рд░рдг рдлрд╝реАрд▓реНрдб рдХрд╛ рдХреБрд▓ рдЖрдХрд╛рд░ 28 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ
- рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп ()
- {
- SimpleClass simpleObject = рдирдпрд╛ SimpleClass ();
- рд╡рд╛рдкрд╕реА;
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
|
рдЪрд┐рддреНрд░рд╛ 2. SimpleClass рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд╡рд┐рдВрдбреЛрдЕрдВрдЬреАрд░ рдореЗрдВред рдЪрд┐рддреНрд░ 2 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдкрд▓рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдбреАрдмрдЧрд░ рдореЗрдореЛрд░реА рд╡рд┐рдВрдбреЛ (рдбреАрдмрдЧ-> рд╡рд┐рдВрдбреЛрдЬ-> рдореЗрдореЛрд░реА-> рдореЗрдореЛрд░реА 1) рдХреЛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░, ECX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рд░рд▓ рдСрдмрдЬреЗрдХреНрдЯ рдкрддреЗ рдкрд░, рд╣рдордиреЗ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдбрдВрдк рдХреЛ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
1. рдкрд╣рд▓реЗ 4-рдмрд╛рдЗрдЯ рдмреНрд▓реЙрдХ рд╕рд┐рдВрдХрдмреНрд▓рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ (рдФрд░ рдЗрд╕рдХреЗ рд╣реИрд╢ рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдереА), рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 0 рд╣реИред
2. рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреЗ рдЧрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдСрдмрдЬреЗрдХреНрдЯ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рд╕рдВрджрд░реНрдн 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╢реБрд░реБрдЖрдд рдСрдлрд╕реЗрдЯ 4 рдкрд░ рд╣реЛрддреА рд╣реИред
3. рдЕрдЧрд▓рд╛ рдЪрд░ l1 рдХреЗ рдЖрда рдмрд╛рдЗрдЯ рдорд╛рдиреЛрдВ рдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╣реИред
4. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ 4-рдмрд╛рдЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд░реАрдл рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ GC рд╣реАрдк рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред
5. рдкреНрд░рдХрд╛рд░ рдХреЗ int рдХреЗ рдЪрд░ i1 рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВред
6. рдкреНрд░рдХрд╛рд░ рдЪрд╛рд░ рдХреЗ рджреЛ рдЪрд░ - рд╕реА 1 рдФрд░ рд╕реА 2 - рдЕрдЧрд▓-рдмрдЧрд▓ рд╕реНрдерд┐рдд рд╣реИрдВред
7. рд▓рдШреБ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдЪрд░ - s1 рдФрд░ s2 - рднреА "рдЕрдЧрд▓-рдмрдЧрд▓" рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред
8. рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдмреА 1, рдмреА 2, рдмреА 3 рдФрд░ рдмреА 4 рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдЗрдЯ DWORD рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ "рд╕рд╛рдЗрдб рдмрд╛рдп рд╕рд╛рдЗрдб" рд╣реЛрддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд╝реАрд▓реНрдб рд░рдЦрддреЗ рд╕рдордп рдЙрдирдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ StructLayoutAttribute рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓реЗрдЖрдЙрдЯ рдорд╛рди рдХреЛ рдЗрдирдкреБрдЯ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рдорд╛рди рд╣реИрдВ:
1. рдЕрдиреБрдХреНрд░рдорд┐рдХ - рд╡рд╕реНрддреБ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╕реНрд╡рд░реВрдк рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЬрдм рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕реНрдореГрддрд┐ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рд╕реНрдкрд╖реНрдЯ - рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдХреА рд╕рдЯреАрдХ рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдХреЛ рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдбрдСрдлрд╝рд╕реЗрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
3. рдСрдЯреЛ - рд╕реАрдПрд▓рдЖрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЧрдгрдирд╛ рд╕рджрд╕реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред
рд╕реНрдореГрддрд┐ рдХреА рдЕрд╕рдВрд░рдЪрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдмреЗрдЯреЗ рдХреЗ рд╕реНрдЯреНрд░рд╛рдЗрдХ (рдПрд╕рдУрдПрд╕) рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдбрд╛рд▓реЗрдВ (рдЧреБрдг-> рдбрд┐рдмрдЧ-> рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ), рдФрд░ рддрддреНрдХрд╛рд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдирд╛ (ctrl + alt + I), рдирд┐рдореНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
- .рд▓реЛрдб рдПрд╕рдУрдПрд╕
- ! DumpHeap -type SimpleClass
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рдвреЗрд░ рдФрд░ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдорд┐рд▓рддреА рд╣реИ:
рдЪрд┐рддреНрд░рд╛ 3. "DumpHeap -type SimpleClass" рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 3 рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ 36 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рдЗрди 36 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
1. SimpleClass рдЙрджрд╛рд╣рд░рдг рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ 28 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ SimpleClass рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд╢рд╛рдмреНрджрд┐рдХ рддрд╛рд▓рд┐рдХрд╛, рдЖрдХрд╛рд░ рдореЗрдВ 4 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИред)ред
2. рд╢реЗрд╖ 8 рдмрд╛рдЗрдЯреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдбрд░ (4 рдмрд╛рдЗрдЯреНрд╕) рдФрд░ рдЯрд╛рдЗрдк рд╣реИрдВрдбрд▓ (4 рдмрд╛рдЗрдЯреНрд╕) рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред
рд╣рдореЗрдВ рд╕рд░рд▓ рдУрдмреНрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрддрд╛ рдорд┐рд▓рд╛, рдЕрдм рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдбрдВрдк рдХрд░реЗрдВ "DumpObj 0x0214ba30":
рдЪрд┐рддреНрд░рд╛ 4. "DumpObj 0x0214ba30" рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИрд╕реА # рдХрдВрдкрд╛рдЗрд▓рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреНрд▓рд╛рд╕ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдЯрд╛рдЗрдк.рдСрдЯреЛ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рдЦреЗрддреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦреЗрддреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА:
MSDN