Facebook mengeluarkan kod sumber memlab

facebook-memlab

MemLab ialah rangka kerja untuk mencari kebocoran memori JavaScript

Baru-baru ini berita itu menyahkannya Facebook telah membuat keputusan untuk mengeluarkan kod sumber daripada kit alat memlab, iaitu direka untuk menganalisis bahagian keadaan ingatan diperuntukkan secara dinamik (timbunan), tentukan strategi untuk mengoptimumkan kerja dengan memori dan mengesan kebocoran memori yang berlaku apabila melaksanakan kod JavaScript. 

Bingkai dicipta untuk menganalisis punca penggunaan memori yang tinggi apabila bekerja dengan laman web dan aplikasi web. Sebagai contoh, memlab digunakan untuk menganalisis penggunaan memori apabila menggunakan versi baharu tapak Facebook.com, yang mendedahkan kebocoran yang menyebabkan ranap penyemak imbas sebelah pelanggan akibat kehabisan memori percuma.

Orang yang menggunakan aplikasi web kami selalunya akan melihat isu prestasi dan pembetulan fungsi serta-merta. Kehilangan ingatan, bagaimanapun, adalah cerita yang berbeza. Ia tidak ketara serta-merta, kerana ia menggunakan satu bahagian memori pada satu masa, menjejaskan keseluruhan sesi web dan menjadikan interaksi seterusnya lebih perlahan dan kurang responsif.

Untuk membantu pembangun kami menangani perkara ini, kami mencipta MemLab , rangka kerja ujian memori JavaScript yang mengautomasikan pengesanan kebocoran dan memudahkan untuk mengesan kebocoran memori. Kami telah menggunakan MemLab on Meta untuk berjaya mengandungi pertumbuhan memori yang tidak mampan dan mengenal pasti kebocoran memori dan peluang pengoptimuman memori dalam produk dan infrastruktur kami.

Penggunaan memori yang tinggi mempunyai kesan yang signifikan dan negatif secara statistik pada pemuatan halaman dan prestasi interaksi (berapa lama masa yang diperlukan untuk memuatkan halaman atau melakukan interaksi)
Metrik penglibatan pengguna (pengguna aktif, masa yang dihabiskan di tapak, bilangan aktiviti yang dilakukan)

Punca kebocoran ingatan apabila melaksanakan kod JavaScript mungkin kehadiran rujukan objek tersembunyi, jadi pengumpul sampah tidak boleh membebaskan ingatan diduduki oleh objek, caching nilai yang tidak munasabah, atau melaksanakan tatal tak terhingga tanpa mengusir item senarai lama.

Contohnya, dalam kod Chrome berikut, kebocoran memori berlaku kerana objek "obj", walaupun ia ditetapkan kepada null, kerana Chrome menyimpan rujukan dalaman kepada objek yang diberikan untuk membolehkannya diperiksa kemudian dalam konsol web.

Operasi asas Memlab, adalah yang berikut:

  1. Ia melakukan pengesanan kebocoran memori dalam penyemak imbas terlebih dahulu, Memlab membolehkan anda membandingkan syot kilat memori dinamik secara automatik, mengesan kebocoran memori dan hasil agregat.
  2. API traversal timbunan berorientasikan objek yang membolehkan anda melaksanakan algoritma pengesanan kebocoran anda sendiri dan melaksanakan sistem untuk menghuraikan syot kilat timbunan. Penghuraian timbunan disokong untuk penyemak imbas berdasarkan enjin Chromium, serta untuk platform Node.js, Electron dan Hermes.
  3. Antara muka baris arahan dan API untuk mencari peluang mengoptimumkan penggunaan memori.
  4. Sistem penegasan untuk Node.js yang membolehkan anda membuat ujian unit dan menjalankan program berasaskan Node.js untuk memisahkan keadaan anda sendiri, menguji ingatan anda atau menulis penegasan lanjutan.
  5. Pengumpulan jejak pengekalan, MemLab mengumpulkan semua jejak pengekalan bersama-sama dan memaparkan jejak untuk setiap kumpulan objek yang ditapis yang berkongsi jejak pengekalan yang serupa. Surih juga termasuk maklumat penyahpepijatan seperti nod yang mendominasi dan saiz yang dikekalkan.
  6. Dengan melaporkan kebocoran, MemLab boleh dijalankan pada selang masa yang tetap sepanjang hari untuk mendapatkan isyarat berterusan tentang regresi memori. Sebarang regresi baharu ditambahkan pada papan pemuka dalaman, tempat jejak pengekalan terkumpul semua kebocoran memori yang dikesan dikumpul dan diklasifikasikan. Pembangun kemudian boleh mengklik dan melihat sifat objek dalam jejak penahanan untuk setiap kebocoran memori.

Akhirnya jika anda berminat, anda harus tahu bahawa kod Memlab adalah sumber terbuka di bawah lesen MIT dan anda boleh mengetahui lebih lanjut mengenainya Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.