Junior — Middle
შეგიძლიათ ახსნათ, როგორ ხორციელდება მეხსიერების მართვა და ობიექტების ავტომატური სისუფთავე JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
JavaScript-ში მეხსიერების მართვა ავტომატურად ხდება ნაგვის შეგროვების (garbage collection) მექანიზმის საშუალებით. როდესაც ობიექტები იქმნება, ისინი იკავებენ მეხსიერებას heap-ში. ნაგვის შეგროვებელი პერიოდულად შემოწმებს, რომელი ობიექტები აღარ გამოიყენება — ანუ, რომ მათზე აქტიური კოდისგან არ არის მითითებები — და თავისუფლდებს მათ მიერ დაკავებულ მეხსიერებას.
მთავარი ალგორითმი არის მითითებების რაოდენობის გამოთვლა და მისაწვდომი ობიექტების ძიება (mark-and-sweep). მაგალითად, თუ ცვლადი მითითებულია ობიექტზე, ის ითვლება ცოცხალად. თუ მითითებები გაქრება, ობიექტი ხდება წაშლის კანდიდატი.
მაგალითი:
let obj = { name: "test" };
obj = null; // ახლა ობიექტი მიუწვდომელია და ნაგვის შეგროვებელი მას წმენდს
ამ გზით, პროგრამისტს არ სჭირდება მეხსიერების ხელით გათავისუფლება, რაც ამცირებს მეხსიერების გაჟონვისთან დაკავშირებული შეცდომების ალბათობას.