Rangka kerja sumber terbuka Facebook untuk mengesan kebocoran memori dalam JavaScript

Facebook (diharamkan di Persekutuan Rusia) telah membuka kod sumber kit alat memlab, yang direka untuk menganalisis kepingan keadaan memori yang diperuntukkan secara dinamik (timbunan), menentukan strategi untuk mengoptimumkan pengurusan memori dan mengenal pasti kebocoran memori yang berlaku apabila melaksanakan kod dalam JavaScript. Kod dibuka di bawah lesen MIT.

Rangka kerja ini dicipta untuk menganalisis sebab penggunaan memori yang tinggi apabila bekerja dengan tapak web dan aplikasi web. Sebagai contoh, memlab digunakan untuk menganalisis penggunaan memori apabila menggunakan versi baharu laman web Facebook.com, yang memungkinkan untuk mengenal pasti kebocoran yang menyebabkan penyemak imbas ranap pada bahagian pelanggan akibat kehabisan memori percuma.

Punca kebocoran memori apabila melaksanakan kod JavaScript boleh menjadi rujukan objek tersembunyi yang menghalang pengumpul sampah daripada membebaskan memori yang diduduki oleh objek, caching nilai yang tidak bijak, atau pelaksanaan tatal tak terhingga tanpa membuang unsur senarai lama. Sebagai contoh, dalam kod di bawah dalam Chrome, kebocoran memori berlaku disebabkan oleh objek "obj", walaupun pada hakikatnya ia diberikan nilai nol, kerana Chrome menyimpan rujukan dalaman kepada objek output untuk pemeriksaan kemudian dalam konsol web . var obj = {}; console.log(obj); obj = null;

Ciri utama memlab:

  • Mengesan kebocoran memori dalam penyemak imbas. Memlab membolehkan anda membandingkan syot kilat keadaan memori dinamik secara automatik, mengesan kebocoran memori dan mengagregatkan hasil.
  • API berorientasikan objek untuk lelaran timbunan, membolehkan anda melaksanakan algoritma pengesanan kebocoran anda sendiri dan melaksanakan sistem untuk menganalisis syot kilat keadaan timbunan. Analisis timbunan disokong untuk penyemak imbas berdasarkan enjin Chromium, serta untuk platform Node.js, Electron dan Hermes.
  • Antara muka baris arahan dan API untuk mencari peluang mengoptimumkan penggunaan memori.
  • Sistem penegasan untuk Node.js yang membolehkan anda membuat ujian unit dan menjalankan program berdasarkan Node.js untuk mencipta kepingan keadaan anda sendiri, menguji ingatan anda atau menulis semakan penegasan lanjutan.

Sumber: opennet.ru

Tambah komen