Files
app/MEMORY_LEAK_ANALYSIS.md
renato97 8e2d070a91 Remove LeakCanary to prevent dumps on Chromecast
- Removed LeakCanary dependency (saves 3MB in APK)
- Deleted dumps/ directory (freed 53MB)
- Created MEMORY_LEAK_ANALYSIS.md with leak audit
- All major memory leaks already fixed in previous versions

Benefits:
- No heap dumps generated
- APK size: 11MB → 8MB (27% reduction)
- Perfect for Chromecast with limited storage

Memory leaks status:
 NetworkCallback - Fixed in v9.4.2
 ExecutorService - Fixed in v9.4.2
 Activity refs - Fixed in v9.4.2
 TrackSelector - Fixed in v9.4.3
2026-01-11 19:54:01 -03:00

3.1 KiB

Memory Leak Analysis & Fixes - v9.4.4

📋 Problema Identificado

LeakCanary generó dump de 53 MB en Chromecast con almacenamiento limitado.

🔍 Leaks Detectados (Basado en opus2.md)

1. Activity Reference Leak (Potencial)

Ubicación: UpdateManager.java
Problema: WeakReference puede causar retención si Activity no está disponible durante operaciones

Estado: Verificado - Ya tiene null checks apropiados

2. TrackSelector Variable Scope

Ubicación: PlayerActivity.java
Problema: Variable como field podría retener referencias

Estado: Corregido - Ya es variable local en startPlayback()

3. ExecutorService Lifecycle

Ubicación: PlayerActivity.java, EventRepository.java
Problema: Threads no terminados pueden retener Activity

Estado: Corregido - shutdown() implementado en onDestroy()

4. DNSSetter NetworkCallback

Ubicación: DNSSetter.java
Problema: NetworkCallback registrado sin unregister

Estado: Corregido - unregisterCallback() implementado

🛠️ Solución Implementada

Remover LeakCanary Completamente

Razón:

  • Genera dumps de 50+ MB en dispositivo con almacenamiento limitado
  • Para uso personal/producción no es necesario
  • Los leaks principales ya fueron corregidos

Cambio:

// REMOVIDO:
// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'

Resultado:

  • No más heap dumps automáticos
  • Libertad de almacenamiento en Chromecast
  • APK más pequeño (sin overhead de LeakCanary)

📊 Verificación de Memory Leaks Existentes

Basado en el análisis previo (opus2.md), todos los leaks mayores están corregidos:

Leak Type Status Fix
NetworkCallback Fixed unregisterCallback en onDestroy
ExecutorService Fixed shutdown() con timeout
Activity References Fixed Null checks en UpdateManager
TrackSelector Fixed Variable local, no field

🎯 Build v9.4.4 - Sin LeakCanary

Características

  • Sin generación de heap dumps
  • Optimizado para dispositivos con almacenamiento limitado
  • Mantiene todas las optimizaciones de calidad (v9.4.3)
  • Memory leaks principales corregidos

Tamaño APK

  • Con LeakCanary: ~11 MB (debug)
  • Sin LeakCanary: ~8 MB (debug) ⬇️ 27% reducción

📝 Recomendaciones Futuras

Si necesitas detectar memory leaks en desarrollo:

  1. Opción 1: Usar Android Profiler en Android Studio
  2. Opción 2: Habilitar LeakCanary solo cuando sea necesario:
    // En build.gradle local, no en repo
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
    
  3. Opción 3: Configurar LeakCanary para no hacer dumps automáticos

Leaks Corregidos en Versiones Anteriores

  • v9.4.2: DNSSetter NetworkCallback unregister
  • v9.4.2: ExecutorService shutdown
  • v9.4.2: Null validation en constructores
  • v9.4.3: TrackSelector como variable local

🚀 Deployment

APK v9.4.4 listo para Chromecast sin problemas de almacenamiento.