Facebook atvērtā pirmkoda sistēma, lai atklātu atmiņas noplūdes JavaScript

Facebook (Krievijas Federācijā aizliegts) ir atvēris memlab rīkkopas avota kodu, kas paredzēts dinamiski piešķirtās atmiņas (kaudzes) stāvokļa analīzei, atmiņas pārvaldības optimizēšanas stratēģijas noteikšanai un atmiņas noplūdes, kas rodas, izpildot kodu JavaScript. Kods ir atvērts saskaņā ar MIT licenci.

Ietvars tika izveidots, lai analizētu liela atmiņas patēriņa iemeslus, strādājot ar vietnēm un tīmekļa lietojumprogrammām. Piemēram, memlab tika izmantots, lai analizētu atmiņas patēriņu, izmantojot jaunu vietnes Facebook.com versiju, kas ļāva identificēt noplūdes, kas izraisīja pārlūkprogrammas avāriju klienta pusē brīvās atmiņas izsīkuma dēļ.

Atmiņas noplūdes cēloņi, izpildot JavaScript kodu, var būt slēptās objektu atsauces, kas neļauj atkritumu savācējam atbrīvot objekta aizņemto atmiņu, neprātīga vērtību saglabāšana kešatmiņā vai bezgalīgas ritināšanas ieviešana, neizņemot vecos saraksta elementus. Piemēram, tālāk esošajā kodā pārlūkā Chrome rodas atmiņas noplūde objekta “obj” dēļ, neskatoties uz to, ka tam ir piešķirta nulles vērtība, jo Chrome saglabā iekšējās atsauces uz izvades objektiem, lai tās vēlāk pārbaudītu tīmekļa konsolē. . var obj = {}; konsole.log(obj); obj = null;

Galvenās memlab īpašības:

  • Atmiņas noplūdes noteikšana pārlūkprogrammā. Memlab ļauj automātiski salīdzināt dinamiskās atmiņas stāvokļa momentuzņēmumus, noteikt atmiņas noplūdes un apkopot rezultātus.
  • Uz objektu orientēta API kaudzes iterācijai, kas ļauj ieviest savus noplūdes noteikšanas algoritmus un ieviest sistēmas kaudzes stāvokļa momentuzņēmumu analīzei. Kaudzes analīze tiek atbalstīta pārlūkprogrammās, kuru pamatā ir Chromium dzinējs, kā arī platformām Node.js, Electron un Hermes.
  • Komandrindas interfeiss un API, lai atrastu iespējas optimizēt atmiņas izmantošanu.
  • Node.js apstiprinājuma sistēma, kas ļauj izveidot vienību testus un palaist programmas, kuru pamatā ir Node.js, lai izveidotu sava stāvokļa daļas, pārbaudītu atmiņu vai rakstītu paplašinātas apgalvojumu pārbaudes.

Avots: opennet.ru

Pievieno komentāru