Το Facebook κυκλοφόρησε τον πηγαίο κώδικα του memlab

facebook-memlab

Το MemLab είναι ένα πλαίσιο για την εύρεση διαρροών μνήμης JavaScript

Πρόσφατα τα νέα το έσπασαν Το Facebook πήρε την απόφαση να κυκλοφορήσει τον πηγαίο κώδικα του κιτ εργαλείων memlab, το οποίο είναι σχεδιασμένο να αναλύει τμήματα της κατάστασης της μνήμης δυναμικά κατανομή (σωρό), καθορίζει μια στρατηγική για τη βελτιστοποίηση της εργασίας με τη μνήμη και τον εντοπισμό διαρροών μνήμης που συμβαίνουν όταν εκτέλεση κώδικα JavaScript. 

Το πλαίσιο δημιουργήθηκε για να αναλύσει τα αίτια της υψηλής κατανάλωσης μνήμης όταν εργάζεστε με ιστότοπους και εφαρμογές web. Για παράδειγμα, το memlab χρησιμοποιήθηκε για την ανάλυση της κατανάλωσης μνήμης κατά τη χρήση μιας νέας έκδοσης του ιστότοπου Facebook.com, η οποία αποκάλυψε διαρροές που προκάλεσαν σφάλμα προγράμματος περιήγησης από την πλευρά του πελάτη λόγω εξάντλησης της ελεύθερης μνήμης.

Τα άτομα που χρησιμοποιούν τις εφαρμογές ιστού μας θα παρατηρήσουν συχνά προβλήματα απόδοσης και λειτουργικές επιδιορθώσεις αμέσως. Η απώλεια μνήμης, ωστόσο, είναι μια διαφορετική ιστορία. Δεν γίνεται άμεσα αντιληπτό, επειδή καταναλώνει ένα κομμάτι μνήμης τη φορά, επηρεάζοντας ολόκληρη την περίοδο σύνδεσης ιστού και κάνοντας τις επόμενες αλληλεπιδράσεις πιο αργές και λιγότερο ανταποκρινόμενες.

Για να βοηθήσουμε τους προγραμματιστές μας να το αντιμετωπίσουν αυτό, δημιουργήσαμε το MemLab , ένα πλαίσιο δοκιμής μνήμης JavaScript που αυτοματοποιεί τον εντοπισμό διαρροών και διευκολύνει τον εντοπισμό διαρροών μνήμης. Χρησιμοποιήσαμε το MemLab στο Meta για να περιορίσουμε με επιτυχία τη μη βιώσιμη ανάπτυξη μνήμης και να εντοπίσουμε διαρροές μνήμης και ευκαιρίες βελτιστοποίησης μνήμης στα προϊόντα και την υποδομή μας.

Η υψηλή χρήση μνήμης έχει στατιστικά σημαντικό και αρνητικό αντίκτυπο στη φόρτωση σελίδας και στην απόδοση της αλληλεπίδρασης (πόσος χρόνος χρειάζεται για τη φόρτωση μιας σελίδας ή την εκτέλεση μιας αλληλεπίδρασης)
Μετρήσεις αφοσίωσης χρηστών (ενεργοί χρήστες, χρόνος στον ιστότοπο, αριθμός δραστηριοτήτων που πραγματοποιήθηκαν)

Τα αίτια των διαρροών μνήμης κατά την εκτέλεση κώδικα JavaScript μπορεί να είναι η παρουσία κρυφών αναφορών αντικειμένων, έτσι Ο συλλέκτης σκουπιδιών δεν μπορεί να ελευθερώσει τη μνήμη καταλαμβάνεται από το αντικείμενο, αδικαιολόγητη προσωρινή αποθήκευση τιμών ή εφαρμογή άπειρης κύλισης χωρίς εξάλειψη παλαιών στοιχείων λίστας.

Για παράδειγμα, στον παρακάτω κώδικα του Chrome, η διαρροή μνήμης προκύπτει λόγω του αντικειμένου "obj", παρόλο που έχει οριστεί ως μηδενικό, επειδή το Chrome διατηρεί εσωτερικές αναφορές στα αντικείμενα που έχουν αποδοθεί για να επιτρέψει την επιθεώρησή τους αργότερα στην κονσόλα Ιστού.

Η βασική λειτουργία του Memlab, είναι το ακόλουθο:

  1. Κάνει πρώτα τον εντοπισμό διαρροής μνήμης στο πρόγραμμα περιήγησης, το Memlab σάς επιτρέπει να συγκρίνετε αυτόματα στιγμιότυπα δυναμικής μνήμης, να ανιχνεύετε διαρροές μνήμης και να συγκεντρώνετε αποτελέσματα.
  2. Ένα αντικειμενοστραφή API διέλευσης σωρού που σας επιτρέπει να εφαρμόσετε τους δικούς σας αλγόριθμους ανίχνευσης διαρροών και να εφαρμόσετε συστήματα για την ανάλυση στιγμιότυπων σωρού. Η ανάλυση σωρού υποστηρίζεται για προγράμματα περιήγησης που βασίζονται στη μηχανή Chromium, καθώς και για τις πλατφόρμες Node.js, Electron και Hermes.
  3. Διεπαφή γραμμής εντολών και API για εύρεση ευκαιριών βελτιστοποίησης της χρήσης μνήμης.
  4. Ένα σύστημα διεκδίκησης για το Node.js που σας επιτρέπει να δημιουργείτε δοκιμές μονάδων και να εκτελείτε προγράμματα που βασίζονται στο Node.js για να διαχωρίσετε τη δική σας κατάσταση, να ελέγξετε τη μνήμη σας ή να γράψετε σύνθετους ισχυρισμούς.
  5. Ομαδοποίηση ιχνών διατήρησης, το MemLab ομαδοποιεί όλα τα ίχνη διατήρησης και εμφανίζει ένα ίχνος για κάθε ομάδα φιλτραρισμένων αντικειμένων που μοιράζονται παρόμοια ίχνη διατήρησης. Το ίχνος περιλαμβάνει επίσης πληροφορίες εντοπισμού σφαλμάτων, όπως κυρίαρχους κόμβους και διατηρημένα μεγέθη.
  6. Με την αναφορά διαρροών, το MemLab μπορεί να εκτελείται σε τακτά χρονικά διαστήματα κατά τη διάρκεια της ημέρας για να λαμβάνεται ένα συνεχές σήμα σχετικά με τις παλινδρομήσεις της μνήμης. Οποιεσδήποτε νέες παλινδρομήσεις προστίθενται σε έναν εσωτερικό πίνακα εργαλείων, όπου συλλέγονται και ταξινομούνται συγκεντρωμένα ίχνη διατήρησης όλων των ανιχνευόμενων διαρροών μνήμης. Οι προγραμματιστές μπορούν στη συνέχεια να κάνουν κλικ και να προβάλουν ιδιότητες αντικειμένου στο ίχνος αναμονής για κάθε διαρροή μνήμης.

Τελικά αν σε ενδιαφέρει, θα πρέπει να γνωρίζετε ότι ο κώδικας Memlab είναι ανοιχτού κώδικα υπό την άδεια του MIT και μπορείτε να μάθετε περισσότερα για αυτόν Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.