Facebook merilis kode sumber memlab

facebook-memlab

MemLab adalah kerangka kerja untuk menemukan kebocoran memori JavaScript

Baru-baru ini tersiar kabar itu Facebook telah membuat keputusan untuk merilis kode sumber dari kit alat memlab, yang mana dirancang untuk menganalisis bagian dari status memori dialokasikan secara dinamis (heap), menentukan strategi untuk mengoptimalkan pekerjaan dengan memori dan mendeteksi kebocoran memori yang terjadi ketika mengeksekusi kode JavaScript. 

Kerangka kerja dibuat untuk menganalisis penyebab konsumsi memori yang tinggi saat bekerja dengan situs web dan aplikasi web. Misalnya, memlab digunakan untuk menganalisis konsumsi memori saat menggunakan versi baru situs Facebook.com, yang mengungkapkan kebocoran yang menyebabkan crash browser sisi klien karena kehabisan memori bebas.

Orang yang menggunakan aplikasi web kami akan sering melihat masalah kinerja dan perbaikan fungsional segera. Kehilangan ingatan, bagaimanapun, adalah cerita yang berbeda. Ini tidak langsung terlihat, karena menghabiskan satu bagian memori pada satu waktu, memengaruhi seluruh sesi web dan membuat interaksi berikutnya lebih lambat dan kurang responsif.

Untuk membantu pengembang kami mengatasi hal ini, kami membuat MemLab , kerangka kerja pengujian memori JavaScript yang mengotomatiskan deteksi kebocoran dan memudahkan untuk menemukan kebocoran memori. Kami telah menggunakan MemLab di Meta untuk berhasil menahan pertumbuhan memori yang tidak berkelanjutan dan mengidentifikasi kebocoran memori dan peluang pengoptimalan memori dalam produk dan infrastruktur kami.

Penggunaan memori yang tinggi memiliki dampak negatif dan signifikan secara statistik pada pemuatan halaman dan kinerja interaksi (berapa lama waktu yang dibutuhkan untuk memuat halaman atau melakukan interaksi)
Metrik keterlibatan pengguna (pengguna aktif, waktu yang dihabiskan di situs, jumlah aktivitas yang dilakukan)

Penyebab kebocoran memori saat menjalankan kode JavaScript mungkin adanya referensi objek tersembunyi, jadi pengumpul sampah tidak dapat mengosongkan memori ditempati oleh objek, caching nilai yang tidak masuk akal, atau menerapkan scroll tak terbatas tanpa menghapus item daftar lama.

Misalnya, dalam kode Chrome berikut, kebocoran memori terjadi karena objek "obj", meskipun disetel ke null, karena Chrome menyimpan referensi internal ke objek yang dirender untuk memungkinkannya diperiksa nanti di konsol web.

Operasi dasar Memlab, adalah sebagai berikut:

  1. Itu melakukan deteksi kebocoran memori di browser terlebih dahulu, Memlab memungkinkan Anda untuk secara otomatis membandingkan snapshot memori dinamis, mendeteksi kebocoran memori, dan hasil agregat.
  2. API traversal heap berorientasi objek yang memungkinkan Anda mengimplementasikan algoritme deteksi kebocoran Anda sendiri dan mengimplementasikan sistem untuk mengurai cuplikan heap. Penguraian tumpukan didukung untuk browser berdasarkan mesin Chromium, serta untuk platform Node.js, Electron, dan Hermes.
  3. Antarmuka baris perintah dan API untuk menemukan peluang untuk mengoptimalkan penggunaan memori.
  4. Sistem pernyataan untuk Node.js yang memungkinkan Anda membuat pengujian unit dan menjalankan program berbasis Node.js untuk membagi status Anda sendiri, menguji memori Anda, atau menulis pernyataan lanjutan.
  5. Pengelompokan jejak retensi, MemLab mengelompokkan semua jejak retensi bersama-sama dan menampilkan jejak untuk setiap grup objek yang difilter yang memiliki jejak retensi serupa. Jejak juga mencakup informasi debug seperti node yang mendominasi dan ukuran yang dipertahankan.
  6. Dengan melaporkan kebocoran, MemLab dapat dijalankan secara berkala sepanjang hari untuk mendapatkan sinyal berkelanjutan tentang regresi memori. Setiap regresi baru ditambahkan ke dasbor internal, tempat kumpulan jejak retensi dari semua kebocoran memori yang terdeteksi dikumpulkan dan diklasifikasikan. Pengembang kemudian dapat mengklik dan melihat properti objek di jejak tahan untuk setiap kebocoran memori.

Akhirnya jika Anda tertarik, Anda harus tahu bahwa kode Memlab adalah open source di bawah lisensi MIT dan Anda dapat mempelajarinya lebih lanjut Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.