Kerangka kerja sumber terbuka Facebook untuk mendeteksi kebocoran memori di JavaScript

Facebook (dilarang di Federasi Rusia) telah membuka kode sumber toolkit memlab, yang dirancang untuk menganalisis bagian keadaan memori yang dialokasikan secara dinamis (heap), menentukan strategi untuk mengoptimalkan manajemen memori, dan mengidentifikasi kebocoran memori yang terjadi saat mengeksekusi kode di JavaScript. Kode ini terbuka di bawah lisensi MIT.

Kerangka kerja ini dibuat untuk menganalisis alasan konsumsi memori yang tinggi saat bekerja dengan situs web dan aplikasi web. Misalnya, memlab digunakan untuk menganalisis konsumsi memori saat menggunakan versi baru situs web Facebook.com, yang memungkinkan untuk mengidentifikasi kebocoran yang menyebabkan browser mogok di sisi klien karena kehabisan memori bebas.

Penyebab kebocoran memori saat menjalankan kode JavaScript dapat berupa referensi objek tersembunyi yang mencegah pengumpul sampah mengosongkan memori yang ditempati oleh objek, penyimpanan nilai dalam cache yang tidak bijaksana, atau penerapan pengguliran tak terbatas tanpa menghapus elemen daftar lama. Misalnya, dalam kode di bawah ini di Chrome, kebocoran memori terjadi karena objek "obj", meskipun faktanya objek tersebut diberi nilai null, karena Chrome menyimpan referensi internal ke objek keluaran untuk diperiksa nanti di konsol web . var objek = {}; konsol.log(obj); obj = nol;

Fitur utama memlab:

  • Mendeteksi kebocoran memori di browser. Memlab memungkinkan Anda membandingkan snapshot status memori dinamis secara otomatis, mendeteksi kebocoran memori, dan menggabungkan hasilnya.
  • API berorientasi objek untuk iterasi heap, memungkinkan Anda mengimplementasikan algoritme deteksi kebocoran Anda sendiri dan mengimplementasikan sistem untuk menganalisis snapshot status heap. Analisis heap didukung untuk browser berbasis mesin Chromium, serta untuk platform Node.js, Electron, dan Hermes.
  • Antarmuka baris perintah dan API untuk menemukan peluang mengoptimalkan penggunaan memori.
  • Sistem pernyataan untuk Node.js yang memungkinkan Anda membuat pengujian unit dan menjalankan program berdasarkan Node.js untuk membuat potongan status Anda sendiri, menguji memori Anda, atau menulis pemeriksaan pernyataan yang diperluas.

Sumber: opennet.ru

Tambah komentar