Sobes.tech
Middle

Kodda xotira oqishini qanday tuzatardingiz?

sobes.tech AI

AIdan javob

Siz brauzerning ishlab chiqish vositalari (Timeline / Performance, Memory) yordamida oqishni aniqlay olasizmi?

Oddiy xotira oqishi sabablari:

  • Ob'ektlarga bog'langan bog'lanishlar:
    • Unutilgan vaqt belgilovchilar (setInterval, setTimeout) ob'ektlarga murojaat qiladi.
    • Aniq bo'lmagan voqea ishlovchilar, ular ajratilmagan (removeEventListener).
    • Tashqi o'zgaruvchilarni uzoqroq ushlab turadigan yopilishlar.
    • Hujjatdan olib tashlangan DOM elementlari, ammo JavaScriptda bog'lanishlar qolgan.
// Unutilgan vaqt belgilovchi tufayli oqim misoli
const leakyObject = {
  data: 'some data'
};

setInterval(() => {
  console.log(leakyObject.data); // leakyObject tozalovchi tomonidan to'planmaydi
}, 1000);
  • Katta ma'lumot tuzilmalari:
    • Juda katta massivlar yoki ob'ektlarni yaratish va saqlash, agar iteratorlar yoki streaming yordamida hal qilish mumkin bo'lsa.
  • Keshlarni noto'g'ri ishlatish:
    • Cheksiz o'sadigan keshlar (LRU, LFU va boshqalar) bilan.
  • Tashqi kutubxonalar oqishi:
    • Kutubxonalar hujjatlari yoki manba kodini potentsial muammolar uchun tekshirish.

Tuzatish:

  1. Voqealarni va vaqt belgilovchilarni bekor qilish: Barcha voqea ishlovchilarining ajratilganligiga va vaqt belgilovchilarning tozalanganligiga ishonch hosil qiling.
// To'g'ri vaqt belgilovchini tozalash
const leakyObject = {
  data: 'some data'
};
let timerId;

function startTimer() {
  timerId = setInterval(() => {
    console.log(leakyObject.data);
  }, 1000);
}

function stopTimer() {
  clearInterval(timerId); // Vaqt belgilovchini tozalash
}
  1. Bog'lanishlarni null qilish: Katta yoki foydalanilmayotgan ob'ektlarga bog'lanishlarni aniq null qilish, shunda garbage collector ularni to'plashi mumkin.
  2. WeakMap va WeakSet dan foydalanish: Garbage collector ularni olib tashlashi uchun, ular bilan bog'langan ob'ektlarga bog'lanishlarni saqlash.
  3. Ma'lumot tuzilmalarini optimallashtirish: Ko'proq samarali tuzilmalar yoki yondashuvlar (masalan, kechikish bilan yuklash) ishlatish.
  4. Kesh hajmini cheklash: Olib tashlash strategiyalarini joriy etish.
  5. Kutubxonalarni yangilash yoki almashtirish: Agar muammo tashqi kutubxonada bo'lsa, uni yangilash yoki alternativ topish.

Tuzatgandan so'ng, ishlab chiqish vositalarini yana ishlatib, oqishni tekshiring.