Facebook-მა გამოაქვეყნა memlab-ის საწყისი კოდი

facebook-memlab

MemLab არის ჩარჩო JavaScript მეხსიერების გაჟონვის საპოვნელად

ცოტა ხნის წინ გავრცელდა ინფორმაცია ფეისბუქმა მიიღო გადაწყვეტილება წყაროს კოდის გამოქვეყნების შესახებ ხელსაწყოების ნაკრებიდან მემლაბი, რომელიც შექმნილია მეხსიერების მდგომარეობის ნაწილების გასაანალიზებლად დინამიურად განაწილებული (გროვა), განსაზღვრავს სტრატეგიას მეხსიერებასთან მუშაობის ოპტიმიზაციისთვის და მეხსიერების გაჟონვის აღმოსაჩენად, რომელიც ხდება მაშინ JavaScript კოდის შესრულება. 

ჩარჩო შეიქმნა მეხსიერების მაღალი მოხმარების მიზეზების გასაანალიზებლად ვებსაიტებთან და ვებ აპლიკაციებთან მუშაობისას. მაგალითად, memlab გამოიყენებოდა მეხსიერების მოხმარების გასაანალიზებლად Facebook.com საიტის ახალი ვერსიის გამოყენებისას, რომელმაც გამოავლინა გაჟონვა, რამაც გამოიწვია კლიენტის მხრიდან ბრაუზერის ავარია თავისუფალი მეხსიერების ამოწურვის გამო.

ადამიანები, რომლებიც იყენებენ ჩვენს ვებ აპლიკაციებს, ხშირად შეამჩნევენ მუშაობის პრობლემებს და ფუნქციონალურ შესწორებებს მაშინვე. თუმცა მეხსიერების დაკარგვა სხვა ამბავია. ეს არ არის დაუყოვნებლივ შესამჩნევი, რადგან ის მოიხმარს მეხსიერების ერთ ნაწილს ერთდროულად, რაც გავლენას ახდენს მთელ ვებ სესიაზე და შემდგომ ინტერაქციას უფრო ნელა და ნაკლებად რეაგირებს.

იმისათვის, რომ დავეხმაროთ ჩვენს დეველოპერებს ამ პრობლემის მოგვარებაში, ჩვენ შევქმენით MemLab, JavaScript მეხსიერების ტესტირების ჩარჩო, რომელიც ავტომატიზირებს გაჟონვის გამოვლენას და აადვილებს მეხსიერების გაჟონვის დადგენას. ჩვენ გამოვიყენეთ MemLab Meta-ზე, რათა წარმატებით შევინარჩუნოთ მეხსიერების არამდგრადი ზრდა და ამოვიცნოთ მეხსიერების გაჟონვა და მეხსიერების ოპტიმიზაციის შესაძლებლობები ჩვენს პროდუქტებსა და ინფრასტრუქტურაში.

მეხსიერების მაღალ გამოყენებას აქვს სტატისტიკურად მნიშვნელოვანი და უარყოფითი გავლენა გვერდის დატვირთვაზე და ურთიერთქმედების შესრულებაზე (რამდენი ხანი სჭირდება გვერდის ჩატვირთვას ან ურთიერთქმედების შესრულებას)
მომხმარებლის ჩართულობის მეტრიკა (აქტიური მომხმარებლები, საიტზე გატარებული დრო, შესრულებული აქტივობების რაოდენობა)

მეხსიერების გაჟონვის მიზეზები JavaScript კოდის შესრულებისას შეიძლება იყოს ფარული ობიექტის მითითებების არსებობაისე, რომ ნაგვის შემგროვებელს არ შეუძლია მეხსიერების გათავისუფლება ობიექტის მიერ დაკავებული, მნიშვნელობების არაგონივრული ქეშირება ან უსასრულო გადახვევის განხორციელება ძველი სიის ელემენტების გამოდევნის გარეშე.

მაგალითად, Chrome-ის შემდეგ კოდში, მეხსიერების გაჟონვა ხდება "obj" ობიექტის გამო, მიუხედავად იმისა, რომ ის დაყენებულია null-ზე, რადგან Chrome ინახავს შიდა მითითებებს რენდრებულ ობიექტებზე, რათა შემდგომში შესაძლებელი იყოს მათი შემოწმება ვებ კონსოლში.

Memlab-ის ძირითადი ოპერაცია, არის შემდეგი:

  1. ის პირველ რიგში აკეთებს მეხსიერების გაჟონვის გამოვლენას ბრაუზერში, Memlab საშუალებას გაძლევთ ავტომატურად შეადაროთ დინამიური მეხსიერების სნეპშოტები, აღმოაჩინოთ მეხსიერების გაჟონვა და შეაგროვოთ შედეგები.
  2. ობიექტზე ორიენტირებული heap traversal API, რომელიც საშუალებას გაძლევთ განახორციელოთ საკუთარი გაჟონვის გამოვლენის ალგორითმები და დანერგოთ სისტემები გროვის სნეპშოტების ანალიზისთვის. Heap parsing მხარდაჭერილია Chromium ძრავზე დაფუძნებული ბრაუზერებისთვის, ასევე Node.js, Electron და Hermes პლატფორმებისთვის.
  3. ბრძანების ხაზის ინტერფეისი და API მეხსიერების გამოყენების ოპტიმიზაციის შესაძლებლობების პოვნა.
  4. მტკიცების სისტემა Node.js-ისთვის, რომელიც საშუალებას გაძლევთ შექმნათ ერთეულების ტესტები და გაუშვათ Node.js-ზე დაფუძნებული პროგრამები თქვენი მდგომარეობის გასაყოფად, მეხსიერების შესამოწმებლად ან გაფართოებული განცხადებების დასაწერად.
  5. შეკავების კვალის დაჯგუფება, MemLab აჯგუფებს ყველა შეკავების კვალს ერთად და აჩვენებს კვალს გაფილტრული ობიექტების თითოეული ჯგუფისთვის, რომლებსაც აქვთ მსგავსი შეკავების კვალი. კვალი ასევე მოიცავს გამართვის ინფორმაციას, როგორიცაა დომინანტური კვანძები და შენარჩუნებული ზომები.
  6. გაჟონვის შესახებ შეტყობინებით, MemLab შეიძლება იმუშაოს რეგულარული ინტერვალებით მთელი დღის განმავლობაში, რათა მიიღოთ უწყვეტი სიგნალი მეხსიერების რეგრესიის შესახებ. ნებისმიერი ახალი რეგრესია ემატება შიდა დაფა, სადაც ყველა აღმოჩენილი მეხსიერების გაჟონვის გაერთიანებული კვალი გროვდება და კლასიფიცირდება. შემდეგ დეველოპერებს შეუძლიათ დააწკაპუნონ და ნახონ ობიექტის თვისებები შეჩერების კვალში მეხსიერების თითოეული გაჟონვისთვის.

საბოლოოდ თუ გაინტერესებს, უნდა იცოდეთ, რომ Memlab კოდი არის ღია კოდი MIT ლიცენზიით და შეგიძლიათ მეტი გაიგოთ ამის შესახებ შემდეგ ბმულზე.


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

იყავი პირველი კომენტარი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები აღნიშნულია *

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.