Facebook open sourced framework para sa pag-detect ng mga memory leaks sa JavaScript

Binuksan ng Facebook (ban sa Russian Federation) ang source code ng memlab toolkit, na idinisenyo upang suriin ang mga hiwa ng estado ng dynamically allocated memory (heap), tukuyin ang mga estratehiya para sa pag-optimize ng memory management, at tukuyin ang mga memory leaks na nangyayari kapag nag-execute ng code sa JavaScript. Ang code ay bukas sa ilalim ng lisensya ng MIT.

Ang balangkas ay nilikha upang pag-aralan ang mga dahilan para sa mataas na pagkonsumo ng memorya kapag nagtatrabaho sa mga website at web application. Halimbawa, ginamit ang memlab upang pag-aralan ang pagkonsumo ng memorya kapag gumagamit ng bagong bersyon ng website ng Facebook.com, na naging posible upang matukoy ang mga pagtagas na humantong sa pag-crash ng browser sa panig ng kliyente dahil sa pagkaubos ng libreng memorya.

Ang mga sanhi ng pagtagas ng memory kapag nag-execute ng JavaScript code ay maaaring itago ang mga object reference na pumipigil sa garbage collector na palayain ang memorya na inookupahan ng object, hindi matalinong pag-cache ng mga value, o pagpapatupad ng walang katapusang pag-scroll nang hindi inaalis ang mga lumang elemento ng listahan. Halimbawa, sa code sa ibaba sa Chrome, may naganap na memory leak dahil sa object na "obj", sa kabila ng katotohanan na ito ay itinalaga ang halaga ng null, dahil ang Chrome ay nag-iimbak ng mga panloob na sanggunian sa mga output na bagay para sa inspeksyon sa ibang pagkakataon sa web console . var obj = {}; console.log(obj); obj = null;

Mga pangunahing tampok ng memlab:

  • Pag-detect ng mga pagtagas ng memorya sa browser. Binibigyang-daan ka ng Memlab na awtomatikong ihambing ang mga dynamic na snapshot ng estado ng memorya, makita ang mga pagtagas ng memorya, at pagsama-samahin ang mga resulta.
  • Isang object-oriented na API para sa heap iteration, na nagbibigay-daan sa iyong ipatupad ang sarili mong mga algorithm ng pag-detect ng leak at ipatupad ang mga system para sa pagsusuri ng mga snapshot ng heap state. Sinusuportahan ang heap analysis para sa mga browser batay sa Chromium engine, gayundin para sa mga platform ng Node.js, Electron at Hermes.
  • Command line interface at API para sa paghahanap ng mga pagkakataon para ma-optimize ang paggamit ng memory.
  • Isang assert system para sa Node.js na nagbibigay-daan sa iyong lumikha ng mga unit test at magpatakbo ng mga program batay sa Node.js upang lumikha ng mga hiwa ng sarili mong estado, subukan ang iyong memorya, o magsulat ng mga pinahabang assert check.

Pinagmulan: opennet.ru

Magdagdag ng komento