Facebook malfermfonteca kadro por detekti memorfuĝojn en JavaScript

Facebook (malpermesita en la Rusa Federacio) malfermis la fontkodon de la ilaro memlab, dizajnita por analizi tranĉaĵojn de la stato de dinamike asignita memoro (amaso), determini strategiojn por optimumigi memoradministradon, kaj identigi memorlikojn kiuj okazas dum ekzekuto de kodo en. JavaScript. La kodo estas malfermita sub la MIT-licenco.

La kadro estis kreita por analizi la kialojn de alta memorkonsumo kiam oni laboras kun retejoj kaj retejoj. Ekzemple, memlab estis uzata por analizi memorkonsumon kiam oni uzis novan version de la retejo Facebook.com, kio ebligis identigi likojn, kiuj kaŭzis kraŝadon de la retumilo ĉe la klienta flanko pro la elĉerpiĝo de libera memoro.

Kaŭzoj de memorfuĝoj dum efektivigado de JavaScript-kodo povas esti kaŝaj objektoreferencoj kiuj malhelpas la rubkolektiston liberigado de la memoro okupita per la objekto, malprudenta kaŝmemoro de valoroj, aŭ efektivigo de senfina movo sen elpelado de malnovaj listelementoj. Ekzemple, en la malsupra kodo en Chrome, memorfuĝo okazas pro la objekto "obj", malgraŭ la fakto, ke ĝi ricevas la valoron de nulo, ĉar Chrome stokas internajn referencojn al la eligobjektoj por posta inspektado en la retkonzolo. . var obj = {}; konzolo.log(obj); obj = nulo;

Ĉefaj trajtoj de memlab:

  • Detektante memorfuĝojn en la retumilo. Memlab ebligas vin aŭtomate kompari dinamikajn memorŝtatajn momentfotojn, detekti memorfuĝojn kaj kunigi la rezultojn.
  • Objekt-orientita API por ripeto de amasoj, permesante al vi efektivigi viajn proprajn algoritmojn de detektado de likoj kaj efektivigi sistemojn por analizi momentojn de statoj de amasoj. Heap-analizo estas subtenata por retumiloj bazitaj sur la Chromium-motoro, same kiel por la platformoj Node.js, Electron kaj Hermes.
  • Komandlinia interfaco kaj API por trovi ŝancojn por optimumigi memoruzon.
  • Aserta sistemo por Node.js, kiu permesas vin krei unutestojn kaj ruli programojn bazitajn sur Node.js por krei tranĉaĵojn de via propra stato, testi vian memoron aŭ skribi plilongigitajn asertajn kontrolojn.

fonto: opennet.ru

Aldoni komenton