Qafas ta' sors miftuħ ta' Facebook biex jiskopri tnixxijiet tal-memorja f'JavaScript

Facebook (ipprojbit fil-Federazzjoni Russa) fetaħ il-kodiċi tas-sors tal-għodda tal-memlab, iddisinjat biex janalizza flieli tal-istat tal-memorja allokata dinamikament (borġ), jiddetermina strateġiji għall-ottimizzazzjoni tal-ġestjoni tal-memorja, u jidentifika tnixxijiet tal-memorja li jseħħu meta tesegwixxi kodiċi f' JavaScript. Il-kodiċi huwa miftuħ taħt il-liċenzja MIT.

Il-qafas inħoloq biex janalizza r-raġunijiet għal konsum għoli ta 'memorja meta taħdem ma' websajts u applikazzjonijiet tal-web. Pereżempju, memlab intuża biex janalizza l-konsum tal-memorja meta tintuża verżjoni ġdida tal-websajt Facebook.com, li għamilha possibbli li jiġu identifikati tnixxijiet li wasslu biex il-browser jiġġarraf fuq in-naħa tal-klijent minħabba l-eżawriment tal-memorja ħielsa.

Kawżi ta 'tnixxija tal-memorja meta tesegwixxi kodiċi JavaScript jistgħu jkunu referenzi ta' oġġetti moħbija li jipprevjenu lill-kollettur taż-żibel milli jeħles il-memorja okkupata mill-oġġett, caching mhux għaqli ta 'valuri, jew implimentazzjoni ta' scrolling infinit mingħajr tkeċċi elementi tal-lista qodma. Per eżempju, fil-kodiċi hawn taħt fil-Chrome, sseħħ tnixxija tal-memorja minħabba l-oġġett "obj", minkejja l-fatt li huwa assenjat il-valur ta 'null, peress li Chrome jaħżen referenzi interni għall-oġġetti tal-output għal spezzjoni aktar tard fil-console tal-web. . var obj = {}; console.log(obj); obj = null;

Karatteristiċi ewlenin ta' memlab:

  • Tiskopri tnixxijiet tal-memorja fil-browser. Memlab jippermettilek tqabbel awtomatikament snapshots tal-istat tal-memorja dinamika, tiskopri tnixxijiet tal-memorja, u tiġbor ir-riżultati.
  • API orjentata lejn l-oġġetti għall-iterazzjoni tal-heap, li tippermettilek timplimenta l-algoritmi ta' skoperta ta' tnixxija tiegħek stess u timplimenta sistemi għall-analiżi ta' snapshots tal-istat tal-heap. L-analiżi tal-borġ hija appoġġjata għall-browsers ibbażati fuq il-magna Chromium, kif ukoll għall-pjattaformi Node.js, Electron u Hermes.
  • Interface tal-linja tal-kmand u API biex jinstabu opportunitajiet biex jiġi ottimizzat l-użu tal-memorja.
  • Sistema ta’ affermazzjoni għal Node.js li tippermettilek toħloq testijiet ta’ unità u tħaddem programmi bbażati fuq Node.js biex toħloq biċċiet tal-istat tiegħek stess, tittestja l-memorja tiegħek, jew tikteb kontrolli ta’ affermazzjoni estiżi.

Sors: opennet.ru

Żid kumment