Негізгі айырмашылық – қоқыс жинағыш пен деструктор
Бағдарламалау тілдерінің көпшілігі объектіге бағытталған бағдарламалауды қолдайды. Бұл объектілерді пайдаланып бағдарламаны немесе бағдарламалық жасақтаманы құру әдістемесі. Нысан класс арқылы жасалады, сондықтан ол класс данасы болып табылады. Класс нысанның неден тұруы керектігін сипаттайды. Объектілерді құру кезінде жады объектілер үшін бөлінеді. Бөлінген жадты бағдарламаның орындалуының соңында сол жадты басқа нысан үшін қайта пайдалану үшін босату керек. Java және C. NET сияқты бағдарламалау тілдері жадты басқару үшін қоқыс жинағыштарды пайдаланады, ал C және C++ сияқты тілдер бағдарламашыдан жадты басқаруды талап етеді. Жадтың қажетті көлемін бөлу керек, ал орындаудың соңында жад босатылуы керек. Қоқыс жинағыш және деструктор жадты босату үшін пайдаланылады. Қоқыс жинағыш пен деструктордың негізгі айырмашылығы мынада: қоқыс жинаушы жадты автоматты түрде басқаруды жүзеге асыратын бағдарламалық құрал, ал деструктор объектіні жою кезінде қоқыс жинаушы шақыратын арнайы әдіс.
Қоқыс жинағыш дегеніміз не?
Кейбір бағдарламалау тілдерінде басқарылатын код орталары бар. Java және C программалау тілдерінде жадты автоматты басқару орындалады. Бағдарламалаушыға объектілер пайдаланатын жадты босатудың қажеті жоқ. Оларға тіпті күрделі жүйелерді жасау оңайырақ, өйткені жадты басқару автоматты түрде орындалады. C, C++ және Objective C сияқты бағдарламалау тілдерінде бағдарлама объектілердің жадын жүйеге қайтаруы керек. Java және C сияқты тілдер енді пайдаланылмайтын нысандарды анықтай алады. Содан кейін олар сол нысандар үшін бөлінген жадты жүйеге қайтарады.
C және Java бағдарламалау тілдерінде Student деп аталатын класс болса, нысанды Student s=new Student () арқылы жасауға болады; «Жаңа» Студент сыныбының данасын жасау үшін пайдаланылады. Ол жүйеде жадты бөледі. «S» осы нысан үшін бөлінген жад блогына сілтеме жасайды. Тілдік орталар нысандардың қолданылып жатқанын немесе пайдаланылмайтынын анықтайды. Олар әрі қарай пайдаланылмаса, жад босатылады және кейінірек пайдалануға болады.
01-сурет: қоқыс жинағыш және деструктор
Бағдарламаны іске қосу кезінде жад блоктары жүйелік жад пулынан бөлінеді. Содан кейін бағдарлама сол жадты пайдаланып тапсырмаларды орындайды. Бағдарламаның орындалуы аяқталған кезде, қоқыс жинаушы бағдарлама үшін бөлінген жад блоктарының маңызды немесе қажет еместігін анықтайды. Егер олар қажет болмаса, бұл жад блоктары жүйеге қайтарылады. Сонымен, қоқыс жинаушы бағдарламада жасалған объектілерді бақылай алады. Енді қажет емес жад блоктары жүйелік жад пулына қайта жіберіледі. Бұл процестің басты артықшылығы - бағдарламашыға жадты босатуға назар аударудың қажеті жоқ екенін растау. Ол өнімділік пен жадты пайдалануды теңестіреді.
Deструктор дегеніміз не?
Дструктор – сыныптың арнайы мүше функциясы. Ол нысан аумақтан шыққан сайын шақырылады. Функция аяқталғанда немесе бағдарламаның орындалуының соңында объект жойылуы мүмкін. Деструктордың аты сынып атымен бірдей. Объектіні құру үшін конструктор қолданылады. Ол параметрлерді қабылдай алады. Конструкторда қайтаратын мәндер де болуы мүмкін. Бірақ Деструкторда қайтару түрі немесе қабылдау параметрлері жоқ. Класс тек бір деструктордан тұруы мүмкін. Тильде белгісін пайдаланып деструкторға сілтеме жасалады. Егер сынып атауы Студент болса, деструктор ~Студент () {} болады.
Қоқыс жинағыш енді қажет емес нысандарды іздейді. Ол бағдарламамен енді пайдаланылмайтын нысандардың жойылуын қамтамасыз етеді. Ол жадты босатуға және ресурстарды бөлуге деструкторды шақырады. Деструкторлар жадты босату, файлдарды жабу, желі ресурстарын шығару және дерекқор қосылымдарын жабу үшін пайдалы. Көптеген бағдарламалау тілдерінде деструкторды жазудың қажеті жоқ, себебі қоқыс жинағыш әдепкі конструкторды өздігінен шақырады. Егер бағдарламашы C++ сияқты тілдегі көрсеткіштерді пайдаланып динамикалық жадты бөлуді жасаған болса, онда ол объект жойылмай тұрып жадты босату үшін деструктор жазуы керек.
Қоқыс жинағыш пен деструктордың қандай ұқсастығы бар?
Қоқыс жинаушы да, деструктор да бағдарлама үшін қажет емес жадты босату үшін пайдаланылады
Қоқыс жинағыш пен деструктордың айырмашылығы неде?
Қоқыс жинағыш пен Деструктор |
|
Қоқыс жинағыш – жадты автоматты түрде басқаруды жүзеге асыратын бағдарламалық құрал. | Дструктор – объектіні жою кезінде қоқыс жинаушы шақыратын арнайы әдіс. |
Түр | |
Қоқыс жинағыш - бұл бағдарламалық құрал. | Deструктор – бұл әдіс. |
Қорытынды – Қоқыс жинағыш пен Деструктор
Қоқыс жинаушы және деструктор - жадты босатумен байланысты екі термин. Бұл мақалада қоқыс жинағыш пен деструктор арасындағы айырмашылық талқыланды. Қоқыс жинағыш пен деструктордың айырмашылығы мынада: қоқыс жинағыш - бұл жадты автоматты түрде басқаруды жүзеге асыратын бағдарламалық құрал, ал деструктор - объектіні жою кезінде қоқыс жинаушы шақыратын арнайы әдіс.
Garbage Collector vs Destructor PDF файлын жүктеп алыңыз
Сіз осы мақаланың PDF нұсқасын жүктеп алып, оны сілтеме жазбасына сәйкес офлайн мақсаттарда пайдалана аласыз. PDF нұсқасын мына жерден жүктеп алыңыз: Қоқыс жинағыш пен деструктор арасындағы айырмашылық