Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 89

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

dispose is

- ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² случаС ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ;

- ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ дСйствия ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

- ВызываСтся автоматичСски сборщиком мусора.

do

end


Π’ΠΎΠ³Π΄Π° любой класс, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… дСйствий всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° сборщик ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ экзСмпляров, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ dispose Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° выполняла эти дСйствия. НапримСр, прСдставим, Ρ‡Ρ‚ΠΎ класс FILE ΠΈΠΌΠ΅Π΅Ρ‚ логичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ opened ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ close. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ dispose ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


dispose is

- ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² случаС ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

- Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ связанный Ρ„Π°ΠΉΠ», Ссли ΠΎΠ½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚.

- ВызываСтся автоматичСски сборщиком мусора.

do

if opened then

close

end

end


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: ΠΏΡ€ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вызываСтся dispose - Π»ΠΈΠ±ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ (Ρ‡Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ самый ΠΎΠ±Ρ‰ΠΈΠΉ случай), Π»ΠΈΠ±ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π² классС, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° MEMORY.

Π‘Π±ΠΎΡ€ΠΊΠ° мусора ΠΈ внСшниС Π²Ρ‹Π·ΠΎΠ²Ρ‹

Π₯ΠΎΡ€ΠΎΡˆΠΎ спроСктированная ОО-срСда со сборкой мусора Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, написанными Π½Π° Π½Π΅ ОО-языках. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… лСкциях Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ взаимодСйствиС. (Π‘ΠΌ. "ВзаимодСйствиС с Π½Π΅ ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ", Π»Π΅ΠΊΡ†ΠΈΡŽ 13)

Если ПО Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π»Π΅Π΅ внСшними ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, этим ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасно для управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ внСшняя ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (прСобразованная Π² соотвСтствии с синтаксисом языка внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹):


r (x: SOME_TYPE) is

do

...

a := x

...

end


Π³Π΄Π΅ a ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ r. НапримСр, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ глобальной ΠΈΠ»ΠΈ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языках, ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса Π² нашСй ОО-Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Рассмотрим Π²Ρ‹Π·ΠΎΠ² r(y), Π³Π΄Π΅ y связан с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ О1. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя послС Π²Ρ‹Π·ΠΎΠ²Π°, О1 становится нСдостиТимым Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ части нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ссылка Π½Π° Π½Π΅Π³ΠΎ (ΠΎΡ‚ сущности a) остаСтся Π²ΠΎ внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора ΠΌΠΎΠΆΠ΅Ρ‚ - ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ - ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ О1, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Для Ρ‚Π°ΠΊΠΈΡ… ситуаций Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ защитят Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚ сборщика. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½Ρ‹:


adopt (a) - ΡƒΡΡ‹Π½ΠΎΠ²Π»ΡΡ‚ΡŒ

wean (a) - ΠΎΡ‚Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ Π³Ρ€ΡƒΠ΄ΠΈ, ΠΎΡ‚Π»ΡƒΡ‡Π°Ρ‚ΡŒ


ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ интСрфСйса любой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ взаимодСйствиС ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ описан ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для языка Π‘. "УсыновлСниС" ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ· области дСйствия ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ; "ΠΎΡ‚Π»ΡƒΡ‡Π΅Π½ΠΈΠ΅" - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π½Π΅ ОО-языки ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ссылки Π½Π° Π½ΠΈΡ… внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ - Π΄Π΅Π»ΠΎ рискованноС. Но ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ всСгда. НапримСр, ОО-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ нуТдаСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ интСрфСйсС ΠΌΠ΅ΠΆΠ΄Ρƒ ОО-языком ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ систСмой управлСния Π‘Π”. Π’ этом случаС, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. Π’Π°ΠΊΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ манипуляции Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ классС, написанном с СдинствСнной Ρ†Π΅Π»ΡŒΡŽ - ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… нСприятностСй.

Π‘Ρ€Π΅Π΄Π° с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ рассмотрим, Π½Π΅ вдаваясь Π² Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° спСцифичСская срСда, прСдставлСнная Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ Π² послСднСй Π»Π΅ΠΊΡ†ΠΈΠΈ этой ΠΊΠ½ΠΈΠ³ΠΈ, управляСт ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π­Ρ‚ΠΎ даст ΠΏΡ€ΠΈΠΌΠ΅Ρ€ практичСского, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ достиТимого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

ΠžΡΠ½ΠΎΠ²Ρ‹

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ - автоматичСскоС. Π‘Ρ€Π΅Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сборку мусора, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнСн вопрос ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ "ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сборщик мусора?". ΠžΡ‚Π²Π΅Ρ‚ - ΠΎΠ½ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½! Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ использовании, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… прилоТСниях, ΠΎΠ½ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π΅Π½. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ collection_off.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ сборщиков Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… срСдах, сборщик мусора Π½Π΅ просто освобоТдаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ прилоТСния, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС для Π΅Π΅ использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прилоТСниями (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ освобоТдСния памяти навсСгда). Π Π°Π½Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ это свойство, особСнно для систСм, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя ΠΈΠ»ΠΈ постоянно.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ, Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π½Π° сборщика мусора ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ: эффСктивная сборка памяти, нСбольшиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, стартстопный Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ прилоТСния Π² критичСскиС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора сталкиваСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΌΠΈ практичСскими ограничСниями Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² соврСмСнной ОО-срСдС:

[x]. ОО-ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ внСшниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² частности, Π‘-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ Π² памяти. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄Π° памяти: ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ внСшнюю ΠΏΠ°ΠΌΡΡ‚ΡŒ.

[x]. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ строки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€; экзСмпляры Π΄Ρ€ΡƒΠ³ΠΈΡ… классов ΠΈΠΌΠ΅ΡŽΡ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€.

[x]. НаконСц, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, нСдостаточно ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π² самом ОО-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, - Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΅Π΅ навсСгда ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС.

По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² памяти Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° стандартный систСмный Π²Ρ‹Π·ΠΎΠ² malloc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, наряду с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ограничСниями, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. ВмСсто этого срСда Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ядра ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы участки памяти ΠΈ распрСдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² этих участках с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· самых ΡƒΡ‚ΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Ρ… частСй ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°: сборщик мусора ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π­Ρ‚ΠΎ свойство Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сборщика, Π½ΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ устойчивым ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ. Π‘Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сборку мусора для Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ…, критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… систСм.

Π’Π½ΡƒΡ‚Ρ€ΠΈ ОО-ΠΌΠΈΡ€Π° Π½Π΅Ρ‚ нСобходимости Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ссли гарантируСтся, Ρ‡Ρ‚ΠΎ систСма Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ постоянного Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (подразумСваСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ достиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½). ΠŸΡ€ΠΈ использовании Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. Π’Π½Π΅ΡˆΠ½ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· ОО-ΠΌΠΈΡ€Π° Π² Π²ΠΈΠ΄Π΅ простых адрСсов (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² языкС Π‘). ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, находящиСся Π±Π΅Π· Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 10 ΠΌΠΈΠ½ΡƒΡ‚, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ трудности: Π·Π° это врСмя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ ΠΈ ΠΏΠΎ Π΅Π³ΠΎ адрСсу Π»Π΅ΠΆΠΈΡ‚ Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Π‘-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ доступ ΠΊ Π½Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ макрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ Π½ΠΈ находился.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сборки мусора

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ схСму Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ сборщиком мусора.

РСшСниС прСдставляСт собой Π½Π΅ СдинствСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π° основано Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ совмСстно, Ρ‡Π°ΡΡ‚ΡŒ - нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. КаТдая активизация сборщика Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ сочСтаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², основанных Π½Π° ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ запроса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ памяти. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚: сборку мусора ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ-чистку ΠΈ сТатиС памяти, плюс нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π² мСньшСй стСпСни относящихся ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ.

ИдСя сборки мусора ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ описана Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°Π½Π΅Π΅: слСдуСт ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, - ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдостиТимыми, ΠΈ собраны мусорщиком. ОсновноС прСимущСство этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ просматриваСт Π½Π΅ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ достиТимы ΠΈΠ· Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сущностСй ΠΈ ΠΈΠ· старых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², содСрТащих ссылки Π½Π° ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Всякий Ρ€Π°Π· ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ поколСния всС Π²Ρ‹ΠΆΠΈΠ²ΡˆΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ становятся ΡΡ‚Π°Ρ€ΡˆΠ΅; ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ возраста, ΠΎΠ½ΠΈ пСрСходят Π½Π° ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅. Алгоритм ΠΈΡ‰Π΅Ρ‚ компромисс, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ возраста. Π•Π΅ сниТСниС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ росту старых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ - ΠΊ частой сборкС мусора.