Негизги айырмасы – Таштанды жыйгыч менен Деструктор
Көпчүлүк программалоо тилдери Объектке багытталган программалоону колдойт. Бул объекттерди колдонуу менен программаны же программалык камсыздоону куруу методологиясы. Объект класстын жардамы менен түзүлөт, ошондуктан ал класстын үлгүсү болуп саналат. Класс объекттин эмнеден турушу керектигин сүрөттөп берет. Объекттерди түзүүдө эстутум объекттерге бөлүнөт. Бөлүнгөн эстутум программанын аткарылышынын аягында бул эстутумду кандайдыр бир башка объект үчүн кайра колдонуу үчүн бошотулушу керек. Java жана C. NET сыяктуу программалоо тилдери эс тутумду башкаруу үчүн таштанды жыйноочуларды колдонушат, ал эми C жана C++ сыяктуу тилдер программисттен эстутумду башкарууну талап кылат. Эстутумдун керектүү көлөмү бөлүнүшү керек жана аткаруунун аягында эстутум бошотулушу керек. Таштанды жыйноочу жана жок кылуучу эстутумду бошотуу үчүн колдонулат. Таштанды жыйноочу менен жок кылуучунун негизги айырмасы таштанды жыйноочу бул эстутумду автоматтык түрдө башкарууну жүзөгө ашырган программалык камсыздоо, ал эми деструктор объектти жок кылуу учурунда таштанды жыйноочу тарабынан чакырылган атайын ыкма.
Таштанды жыйноочу деген эмне?
Айрым программалоо тилдеринде код чөйрөлөрү башкарылат. Java жана C программалоо тилдеринде эстутум автоматтык түрдө башкаруу жүргүзүлөт. Программист объекттер колдонгон эстутумду бошотуунун кереги жок. Алар үчүн татаал системаларды иштеп чыгуу оңой, анткени эс тутумду башкаруу автоматтык түрдө жүргүзүлөт. C, C++ жана Objective C сыяктуу программалоо тилдеринде программа объекттердин эс тутумун кайра системага бошотушу керек. Java жана C сыяктуу тилдер колдонулбай калган объекттерди аныктай алат. Андан кийин, алар ошол объекттер үчүн бөлүнгөн эстутумду кайра системага чыгарышат.
Программалоо тилдеринде C жана Java, эгерде Студент деген класс бар болсо, анда Студент s=new Student () аркылуу объект түзүлүшү мүмкүн; "Жаңы" Студент классынын мисалын түзүү үчүн колдонулат. Ал тутумда эстутумду бөлүштүрөт. "S" бул объект үчүн бөлүнгөн эс тутум блогуна тиешелүү. Тилдик чөйрөлөр объекттердин колдонулуп жатканын же колдонулбагандыгын аныктайт. Эгер алар мындан ары колдонулбаса, эс тутум бошотулуп, кийинчерээк колдонулушу мүмкүн.
01-сүрөт: Таштанды жыйноочу жана жок кылуучу
Программаны иштеткенде, эстутум блоктору тутумдун эс тутумунун бассейнинен бөлүнөт. Андан кийин программа ошол эстутумдун жардамы менен тапшырмаларды аткарат. Программанын аткарылышы аяктагандан кийин, таштанды жыйноочу программа үчүн эстутумдун бөлүнгөн блоктору маанилүүбү же жокпу, аныктайт. Алар талап кылынбаса, ал эстутум блоктору системага кайтарылат. Ошентип, таштанды жыйноочу программада түзүлгөн объекттерди көзөмөлдөй алат. Мындан ары талап кылынбаган эстутум блоктору системанын эс тутумунун бассейнине кайра жөнөтүлөт. Бул процесстин негизги артыкчылыгы - программист эстутумду бөлүштүрүүгө басым жасабашы керек. Ал аткарууну жана эстутумду колдонууну тең салмактайт.
Дструктор деген эмне?
Дструктор – класстын өзгөчө мүчө функциясы. Ал объект масштабдан чыккан сайын чакырылат. Объект функция аяктаганда же программанын аткарылышынын аягында жок кылынышы мүмкүн. Деструктор класстын аты менен бирдей атка ээ. Конструктор объектти түзүү үчүн колдонулат. Ал параметрлерди кабыл алат. Конструктор кайтаруучу маанилерге да ээ болушу мүмкүн. Бирок Деструктордо кайтаруу түрү же кабыл алуучу параметрлер жок. Класс бир гана деструктордон турушу мүмкүн. Деструктор тилда белгисин колдонуу менен аталат. Эгер класстын аты Студент болсо, анда деструктор ~Студент () {} болот.
Таштанды жыйноочу мындан ары талап кылынбаган объекттерди издейт. Бул программа тарабынан колдонулбай калган объекттердин жок кылынышын камсыздайт. Ал эстутумду бошотууга жана ресурстарды бөлүштүрүүгө кыйратуучуну чакырат. Деструкторлор эстутумду бошотуу, файлдарды жабуу, тармак ресурстарын чыгаруу жана маалымат базасынын байланыштарын жабуу үчүн пайдалуу. Көпчүлүк программалоо тилдеринде деструкторду жазуунун кажети жок, анткени таштанды жыйноочу демейки конструкторду өз алдынча чакырат. Эгерде программист C++ сыяктуу тилде көрсөткүчтөрдү колдонуу менен кандайдыр бир динамикалык эстутумду бөлүштүрсө, анда ал объект жок кылынганга чейин эстутумду бошотуу үчүн деструктор жазуусу керек.
Таштанды жыйноочу менен жок кылуучунун кандай окшоштугу бар?
Таштанды жыйноочу да, жок кылуучу да программа үчүн талап кылынбай калган эстутумду бошотуу үчүн колдонулат
Таштанды жыйноочу менен жок кылуучунун ортосунда кандай айырма бар?
Таштанды жыйноочу vs Destructor |
|
Таштанды жыйноочу – эстутумду автоматтык түрдө башкаруучу программа. | Дструктор – бул объектти жок кылуу учурунда таштанды жыйноочу чакырган атайын ыкма. |
Түрү | |
Таштанды жыйноочу бул программа. | Дструктор – бул ыкма. |
Корытынды – Таштанды жыйгыч жана Деструктор
Таштанды жыйноочу жана жок кылуучу эстутумду бошотуу менен байланышкан эки термин. Бул макалада таштанды чогултуучу менен кыйратуучунун ортосундагы айырма талкууланган. Таштанды жыйноочу менен кыйратуучунун айырмасы таштанды жыйноочу бул эстутумду автоматтык башкарууну жүзөгө ашырган программалык камсыздоо, ал эми деструктор объектти жок кылуу учурунда таштанды жыйноочу тарабынан чакырылган атайын ыкма.
Garbage Collector vs Destructor PDF форматын жүктөп алыңыз
Сиз бул макаланын PDF версиясын жүктөп алып, аны оффлайн максаттары үчүн колдонсоңуз болот. Сураныч, PDF версиясын бул жерден жүктөп алыңыз: Таштанды жыйноочу менен жок кылуучунун ортосундагы айырма