تم نشره على Google WebPerf (Group WebPerf Group) ، 26 أغسطس 2014.
يجب أن تكون تطبيقات ويب JavaScript الفعالة سلسة وسريعة. يحتاج أي تطبيق يتفاعل مع المستخدمين إلى التفكير في كيفية التأكد من استخدام الذاكرة بكفاءة ، لأنه إذا تم استهلاكه أكثر من اللازم ، فإن الصفحة ستعطل ، مما يجبر المستخدم على إعادة التحميل. ويمكنك الاختباء فقط في الزاوية والبكاء.
جمع القمامة التلقائي ليس بديلاً لإدارة الذاكرة الفعالة ، وخاصة في تطبيقات الويب الكبيرة التي طويلة الأجل. في هذه المحاضرة ، سوف نوضح كيفية إدارة الذاكرة بفعالية من خلال DevTools Chrome.
وتعلم كيفية حل مشكلات الأداء مثل تسريبات الذاكرة ، وتوقف تجميع القمامة المتكرر ، والانتفاخات الشاملة للذاكرة ، وهي الأشياء التي تكلفك حقًا الطاقة.
يعرض Addy Osmani الكثير من الأمثلة في PPT التي سيؤدي إلى تسرب الذاكرة في Chrome V8:
1) حذف خاصية كائن لإبطاء هذا الكائن (استهلاك 15 مرة من الذاكرة)
نسخة الكود كما يلي:
var o = {x: 'y'} ؛
حذف الثور. // في هذا الوقت ستصبح O كائنًا بطيئًا
ثور؛ //
var o = {x: 'y'} ؛
o = فارغة ؛ // يجب أن يكون هكذا
2) الإغلاق
عند إدخال المتغيرات خارج الإغلاق في الإغلاق ، لا يمكن جمع هذا الكائن (GC) عندما ينتهي الإغلاق.
نسخة الكود كما يلي:
var a = function () {
var largestr = new array (1000000). join ('x') ؛
وظيفة الإرجاع () {
إرجاع الل حتى لارجيستور.
}
} () ؛
3) تسرب دوم
عند إزالة COM الأصلي ، لا يمكن إعادة تدوير مرجع العقدة الفرعية إذا لم تتم إزالته.
نسخة الكود كما يلي:
var select = document.queryselector ؛
var treeref = select ('#tree') ؛
// في شجرة com ، Leafref هي عقدة طفل من Treefre
var leafref = select ('#Leaf') ؛
var body = select ('body') ؛
body.removechild (treef) ؛
// لا يمكن سداد شجرة لأن TreeRef لا يزال هناك
//حل:
treef = null ؛
// لا يمكن إعادة تدوير الشجرة بعد ، لأن الأوراق الناتجة لا تزال هناك
LeafRef = null ؛
// الآن يمكن إصدار #Tree.
4) عد الموقت (تحديد) تسرب الموقت
الموقتات هي أيضًا أماكن شائعة تحدث فيها تسرب الذاكرة:
نسخة الكود كما يلي:
لـ (var i = 0 ؛ i <90000 ؛ i ++) {
var buggyobject = {
Callagain: Function () {
var ref = this ؛
var val = setTimeOut (function () {
Ref.Callagain () ؛
} ، 90000) ؛
}
}
buggyobject.callagain () ؛
// على الرغم من أنك تريد إعادة التدوير ، إلا أن المؤقت لا يزال موجودًا
BuggyObject = NULL ؛
}
5) تصحيح الذاكرة
يمكن لأداة تصحيح الأخطاء في الذاكرة الخاصة بـ Chrome عرض استخدام الذاكرة وتسرب الذاكرة بسهولة:
انقر فوق سجل في الجدول الزمني -> الذاكرة:
لمزيد من المحتوى ، يرجى التحقق من PPT الأصلي.