Latihan 1: Deteksi Memory Leak — Debugging

Latihan 1 dari materi Deteksi Memory Leak di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi dua function di kode awal. Data dan tiga console.log di bawahnya sudah ada, biarkan begitu.

  1. detectLeaks(memorySnapshots): memorySnapshots berisi object { timestamp, heapUsed }. Kembalikan object { hasLeak, growthRate, severity }:
    • Hitung kenaikan heapUsed dari tiap snapshot ke snapshot berikutnya.
    • growthRate: rata-rata kenaikan itu, dibulatkan dengan Math.round.
    • hasLeak: true hanya kalau setiap kenaikan lebih dari 0. Satu kali turun atau tetap sudah berarti false.
    • severity: "none" kalau hasLeak false, "low" kalau growthRate < 5, "high" kalau growthRate >= 5.
    • Kurang dari 2 snapshot: kembalikan { hasLeak: false, growthRate: 0, severity: "none" }.
  2. findRetainedObjects(objects): kembalikan array name dari object yang retainCount-nya lebih dari 1. Ini aturan latihan yang disederhanakan: di heap snapshot sungguhan, object yang dipegang satu referensi pun tetap tertahan.

Output-nya harus persis tiga baris ini, berurutan:

  1. true
  2. high
  3. EventListener,Timer

Ada juga cek dengan data lain: heap 10, 30, 25, 40 harus menghasilkan hasLeak false dan "none", heap 10, 9 severity "none", heap 10, 12, 14 severity "low", dan object dengan retainCount 1 gak ikut dikembalikan.

Hint