Fframwaith ffynhonnell agored Facebook i ganfod gollyngiadau cof yn JavaScript

Mae Facebook (a waharddwyd yn Ffederasiwn Rwsia) wedi agor cod ffynhonnell y pecyn cymorth memlab, a gynlluniwyd i ddadansoddi tafelli o gyflwr cof (pentwr a ddyrennir yn ddeinamig), pennu strategaethau ar gyfer optimeiddio rheolaeth cof, a nodi gollyngiadau cof sy'n digwydd wrth weithredu cod yn JavaScript. Mae'r cod yn agored o dan y drwydded MIT.

Crëwyd y fframwaith i ddadansoddi'r rhesymau dros ddefnyddio cof uchel wrth weithio gyda gwefannau a chymwysiadau gwe. Er enghraifft, defnyddiwyd memlab i ddadansoddi defnydd cof wrth ddefnyddio fersiwn newydd o wefan Facebook.com, a oedd yn ei gwneud hi'n bosibl nodi gollyngiadau a arweiniodd at chwalu'r porwr ar ochr y cleient oherwydd blinder y cof rhydd.

Gall gollyngiadau cof wrth weithredu cod JavaScript gael ei achosi gan gyfeiriadau gwrthrych cudd sy'n atal y casglwr sbwriel rhag rhyddhau'r cof a feddiannir gan y gwrthrych, caching annoeth o werthoedd, neu weithredu sgrolio anfeidrol heb ddadfeddiannu hen elfennau rhestr. Er enghraifft, yn y cod isod yn Chrome, mae gollyngiad cof yn digwydd oherwydd y gwrthrych "obj", er gwaethaf y ffaith ei fod yn cael gwerth nwl, gan fod Chrome yn storio cyfeiriadau mewnol at y gwrthrychau allbwn i ganiatáu iddynt gael eu harchwilio'n ddiweddarach. yn y consol gwe. var obj = {}; consol.log(obj); obj = null;

Prif nodweddion memlab:

  • Canfod gollyngiadau cof yn y porwr. Mae Memlab yn caniatáu ichi gymharu cipluniau cyflwr cof deinamig yn awtomatig, canfod gollyngiadau cof, a chyfuno'r canlyniadau.
  • API gwrthrych-ganolog ar gyfer iteriad tomen, sy'n eich galluogi i weithredu eich algorithmau canfod gollyngiadau eich hun a gweithredu systemau ar gyfer dadansoddi cipluniau cyflwr tomen. Cefnogir dadansoddiad tomen ar gyfer porwyr yn seiliedig ar yr injan Chromium, yn ogystal ag ar gyfer llwyfannau Node.js, Electron a Hermes.
  • Rhyngwyneb llinell orchymyn ac API ar gyfer dod o hyd i gyfleoedd i wneud y defnydd gorau o'r cof.
  • System haeru ar gyfer Node.js sy'n eich galluogi i greu profion uned a rhedeg rhaglenni yn seiliedig ar Node.js i greu tafelli o'ch cyflwr eich hun, profi'ch cof, neu ysgrifennu gwiriadau honiad estynedig.

Ffynhonnell: opennet.ru

Ychwanegu sylw