Facebook izlaida memlab pirmkodu

Facebook atmiņa

MemLab ir ietvars JavaScript atmiņas noplūžu atrašanai

Nesen šīs ziņas to uzzināja Facebook ir pieņēmis lēmumu atbrīvot avota kodu no instrumentu komplekta memlab, kurš ir izstrādāts, lai analizētu atmiņas stāvokļa daļas dinamiski piešķirti (kaudze), noteikt stratēģiju, lai optimizētu darbu ar atmiņu un atklātu atmiņas noplūdes, kas rodas, kad JavaScript koda izpilde. 

Ietvarstruktūra tika izveidots, lai analizētu liela atmiņas patēriņa cēloņus 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 atklāja noplūdes, kas izraisīja klienta puses pārlūkprogrammas avāriju brīvās atmiņas izsīkuma dēļ.

Cilvēki, kas izmanto mūsu tīmekļa lietojumprogrammas, bieži vien uzreiz pamanīs veiktspējas problēmas un funkcionālus labojumus. Tomēr atmiņas zudums ir cits stāsts. Tas nav uzreiz pamanāms, jo tas vienlaikus patērē vienu atmiņas daļu, ietekmējot visu tīmekļa sesiju un padarot turpmāko mijiedarbību lēnāku un mazāk atsaucīgu.

Lai palīdzētu mūsu izstrādātājiem risināt šo problēmu, mēs izveidojām MemLab — JavaScript atmiņas testēšanas sistēmu, kas automatizē noplūžu noteikšanu un atvieglo atmiņas noplūžu atrašanu. Mēs esam izmantojuši MemLab on Meta, lai veiksmīgi ierobežotu neilgtspējīgu atmiņas pieaugumu un identificētu atmiņas noplūdes un atmiņas optimizācijas iespējas savos produktos un infrastruktūrā.

Lielam atmiņas lietojumam ir statistiski nozīmīga un negatīva ietekme uz lapas ielādi un mijiedarbības veiktspēju (cik ilgs laiks nepieciešams, lai ielādētu lapu vai veiktu mijiedarbību).
Lietotāju iesaistes metrika (aktīvie lietotāji, vietnē pavadītais laiks, veikto darbību skaits)

Atmiņas noplūdes cēloņi izpildot JavaScript kodu var būt slēptu objektu atsauces klātbūtne, tāpēc atkritumu savācējs nevar atbrīvot atmiņu aizņemts objekts, nepamatota vērtību saglabāšana kešatmiņā vai bezgalīgas ritināšanas ieviešana, neizņemot vecos saraksta vienumus.

Piemēram, šajā Chrome kodā atmiņas noplūde rodas objekta "obj" dēļ, lai gan tas ir iestatīts uz nulli, jo pārlūkā Chrome tiek saglabātas iekšējās atsauces uz renderētajiem objektiem, lai tos varētu pārbaudīt vēlāk tīmekļa konsolē.

Memlab pamatdarbība, ir šāds:

  1. Vispirms pārlūkprogrammā tiek noteikta atmiņas noplūde, Memlab ļauj automātiski salīdzināt dinamiskās atmiņas momentuzņēmumus, noteikt atmiņas noplūdes un apkopot rezultātus.
  2. Objektorientēta kaudzes šķērsošanas API, kas ļauj ieviest savus noplūdes noteikšanas algoritmus un ieviest sistēmas kaudzes momentuzņēmumu parsēšanai. Kaudzes parsēšana tiek atbalstīta pārlūkprogrammās, kuru pamatā ir Chromium dzinējs, kā arī platformām Node.js, Electron un Hermes.
  3. Komandrindas interfeiss un API, lai atrastu iespējas optimizēt atmiņas izmantošanu.
  4. Node.js apgalvojumu sistēma, kas ļauj izveidot vienību testus un palaist uz Node.js balstītas programmas, lai sadalītu savu stāvokli, pārbaudītu atmiņu vai rakstītu papildu apgalvojumus.
  5. Saglabāšanas izsekošanas grupēšana, MemLab sagrupē visas saglabāšanas pēdas un parāda izsekojumu katrai filtrēto objektu grupai, kam ir līdzīgas saglabāšanas pēdas. Izsekošana ietver arī atkļūdošanas informāciju, piemēram, dominējošos mezglus un saglabātos izmērus.
  6. Ziņojot par noplūdēm, MemLab var palaist regulāri visas dienas garumā, lai iegūtu nepārtrauktu signālu par atmiņas regresiju. Visas jaunas regresijas tiek pievienotas iekšējam informācijas panelim, kurā tiek apkopotas un klasificētas visu atklāto atmiņas noplūžu apkopotās saglabāšanas pēdas. Pēc tam izstrādātāji var noklikšķināt un skatīt objekta rekvizītus aizturēšanas trasē par katru atmiņas noplūdi.

Beidzot ja jūs interesē, jums jāzina, ka Memlab kods ir atvērts avots saskaņā ar MIT licenci, un jūs varat uzzināt vairāk par to Šajā saitē.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.