Facebook-ի բաց կոդով շրջանակ՝ JavaScript-ում հիշողության արտահոսք հայտնաբերելու համար

Facebook-ը (արգելված է Ռուսաստանի Դաշնությունում) բացել է memlab գործիքակազմի սկզբնական կոդը, որը նախատեսված է դինամիկ տեղաբաշխված հիշողության վիճակի հատվածները վերլուծելու համար (կույտ), որոշել հիշողության կառավարման օպտիմալացման ռազմավարությունները և հայտնաբերել հիշողության արտահոսքերը, որոնք տեղի են ունենում կոդի կատարման ժամանակ։ JavaScript. Կոդը բաց է MIT լիցենզիայի ներքո:

Շրջանակը ստեղծվել է կայքերի և վեբ հավելվածների հետ աշխատելիս հիշողության մեծ սպառման պատճառները վերլուծելու համար: Օրինակ, memlab-ն օգտագործվել է Facebook.com կայքի նոր տարբերակի օգտագործման ժամանակ հիշողության սպառումը վերլուծելու համար, ինչը հնարավորություն է տվել բացահայտել արտահոսքերը, որոնք հանգեցրել են բրաուզերի խափանմանը հաճախորդի կողմից՝ ազատ հիշողության սպառման պատճառով:

JavaScript կոդի գործարկման ժամանակ հիշողության արտահոսքի պատճառները կարող են լինել թաքնված օբյեկտների հղումները, որոնք թույլ չեն տալիս աղբահանողին ազատել օբյեկտի կողմից զբաղեցրած հիշողությունը, արժեքների անխոհեմ քեշավորումը կամ անսահման ոլորման իրականացումը՝ առանց հին ցուցակի տարրերը հեռացնելու: Օրինակ, Chrome-ում ստորև բերված կոդում հիշողության արտահոսք է տեղի ունենում «obj» օբյեկտի պատճառով, չնայած այն հանգամանքին, որ դրան վերագրվում է null արժեքը, քանի որ Chrome-ը պահում է ներքին հղումները ելքային օբյեկտներին՝ վեբ վահանակում հետագա ստուգման համար: . var obj = {}; console.log (obj); obj = զրոյական;

Memlab-ի հիմնական հատկանիշները.

  • Բրաուզերում հիշողության արտահոսքի հայտնաբերում: Memlab-ը թույլ է տալիս ավտոմատ կերպով համեմատել դինամիկ հիշողության վիճակի ակնթարթները, հայտնաբերել հիշողության արտահոսք և ամփոփել արդյունքները:
  • Կույտային կրկնությունների համար օբյեկտի վրա հիմնված API, որը թույլ է տալիս ներդնել արտահոսքի հայտնաբերման ձեր սեփական ալգորիթմները և ներդնել համակարգեր՝ կույտային վիճակի պատկերների վերլուծության համար: Կույտային վերլուծությունը աջակցվում է Chromium շարժիչի վրա հիմնված բրաուզերների, ինչպես նաև Node.js, Electron և Hermes հարթակների համար:
  • Հրամանի տողի միջերես և API՝ հիշողության օգտագործումը օպտիմալացնելու հնարավորություններ գտնելու համար:
  • Node.js-ի համար հաստատման համակարգ, որը թույլ է տալիս ստեղծել միավորի թեստեր և գործարկել Node.js-ի վրա հիմնված ծրագրեր՝ ձեր սեփական վիճակի հատվածներ ստեղծելու, ձեր հիշողությունը փորձարկելու կամ ընդլայնված հաստատման ստուգումներ գրելու համար:

Source: opennet.ru

Добавить комментарий