פייסבוק פרסמה את קוד המקור של memlab

facebook-memlab

MemLab היא מסגרת לאיתור דליפות זיכרון JavaScript

לאחרונה החדשות פרצו זאת פייסבוק קיבלה את ההחלטה לשחרר את קוד המקור של ערכת הכלים memlab, שזה נועד לנתח חלקים ממצב הזיכרון מוקצה באופן דינמי (ערימה), לקבוע אסטרטגיה לייעל את העבודה עם הזיכרון ולזהות דליפות זיכרון המתרחשות כאשר ביצוע קוד JavaScript. 

המסגרת נוצר כדי לנתח את הסיבות לצריכת זיכרון גבוהה בעבודה עם אתרים ויישומי אינטרנט. לדוגמה, memlab שימש לניתוח צריכת זיכרון בעת ​​שימוש בגרסה חדשה של אתר Facebook.com, שחשפה דליפות שגרמו לקריסת דפדפן בצד הלקוח עקב מיצוי הזיכרון הפנוי.

אנשים שמשתמשים ביישומי האינטרנט שלנו לרוב יבחינו בבעיות ביצועים ובתיקונים פונקציונליים מיד. אובדן זיכרון, לעומת זאת, הוא סיפור אחר. זה לא מורגש מיד, כי זה צורך נתח אחד של זיכרון בכל פעם, משפיע על כל הפעלת האינטרנט והופך את האינטראקציות הבאות לאט יותר ופחות מגיב.

כדי לעזור למפתחים שלנו להתמודד עם זה, יצרנו את MemLab, מסגרת לבדיקת זיכרון JavaScript המאפשרת זיהוי דליפות אוטומטית ומקלה על איתור דליפות זיכרון. השתמשנו ב-MemLab ב-Meta כדי להכיל בהצלחה גידול זיכרון לא בר-קיימא ולזהות דליפות זיכרון והזדמנויות לאופטימיזציה של זיכרון במוצרים ובתשתית שלנו.

לשימוש בזיכרון גבוה יש השפעה מובהקת ושלילית סטטיסטית על טעינת העמוד וביצועי האינטראקציה (כמה זמן לוקח לטעון דף או לבצע אינטראקציה)
מדדי מעורבות משתמשים (משתמשים פעילים, זמן שהייה באתר, מספר הפעילויות שבוצעו)

הגורמים לדליפות זיכרון בעת ביצוע קוד JavaScript עשוי להיות נוכחות של הפניות לאובייקט מוסתר, כך אספן אשפה לא יכול לשחרר זיכרון תפוס על ידי האובייקט, שמירה בלתי סבירה של ערכים במטמון, או יישום גלילה אינסופית מבלי לפנות פריטי רשימה ישנים.

לדוגמה, בקוד Chrome הבא, דליפת הזיכרון מתרחשת בגלל האובייקט "obj", למרות שהוא מוגדר ל-null, מכיוון ש-Chrome שומר הפניות פנימיות לאובייקטים המעובדים כדי לאפשר בדיקה מאוחרת יותר במסוף האינטרנט.

הפעולה הבסיסית של Memlab, זהו:

  1. היא מבצעת תחילה זיהוי דליפות זיכרון בדפדפן, Memlab מאפשרת לך להשוות אוטומטית צילומי זיכרון דינמיים, לזהות דליפות זיכרון ותוצאות מצטברות.
  2. ממשק API למעבר ערימה מונחה עצמים המאפשר לך ליישם אלגוריתמים משלך לזיהוי דליפות ולהטמיע מערכות לניתוח תמונות מצב של ערימה. ניתוח ערמות נתמך עבור דפדפנים המבוססים על מנוע Chromium, כמו גם עבור הפלטפורמות Node.js, Electron והרמס.
  3. ממשק שורת פקודה וממשק API למציאת הזדמנויות לייעל את השימוש בזיכרון.
  4. מערכת הצהרות עבור Node.js המאפשרת לך ליצור בדיקות יחידה ולהפעיל תוכניות מבוססות Node.js כדי לפצל מצב משלך, לבדוק את הזיכרון שלך או לכתוב הצהרות מתקדמות.
  5. קיבוץ עקבות שמירה, MemLab מקבץ את כל עקבות השמירה יחד ומציג מעקב עבור כל קבוצה של אובייקטים מסוננים החולקים עקבות שמירה דומות. המעקב כולל גם מידע על ניפוי באגים כגון צמתים שולטים וגדלים נשמרים.
  6. על ידי דיווח על דליפות, ניתן להפעיל את MemLab במרווחי זמן קבועים לאורך היום כדי לקבל איתות מתמשך לגבי רגרסיות זיכרון. כל רגרסיה חדשה מתווספת ללוח מחוונים פנימי, שבו נאספים ומסווגים עקבות שמירה מאוחדת של כל דליפות הזיכרון שזוהו. מפתחים יכולים לאחר מכן ללחוץ ולהציג מאפייני אובייקט במעקב ההחזקה עבור כל דליפת זיכרון.

בסופו של דבר אם אתה מעוניין, עליך לדעת שקוד Memlab הוא קוד פתוח תחת רישיון MIT ותוכל ללמוד עליו יותר בקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.