Escuchar "El garbage collector de php no vale nada"
Síntesis del Episodio
La burla de algunos PHPeros hacia Java por sus “memory leaks” es, en el mejor de los casos, irónica o desinformada, porque:
En realidad:
✅ Java tiene un Garbage Collector mucho más avanzado
Varios algoritmos (G1, ZGC, Shenandoah, etc.)
Optimizado para procesos de larga duración (daemons, microservicios)
Recolector concurrente y generacional
Puede hacer profiling en caliente (JVM monitoring, heap dumps, etc.)
⚠️ PHP fue diseñado para scripts cortos
Cada petición limpia el estado por completo
En CLI o workers largos, tiene GC limitado
Su GC solo recolecta ciclos de referencias (no memoria en general)
Hasta PHP 7.3, el GC podía causar más problemas que soluciones (estaba desactivado por defecto en algunas distros)
Entonces… ¿por qué algunos se ríen?
Porque en PHP tradicional (FPM/Apache), todo se limpia al terminar el request, lo cual:
Evita leaks por diseño
Da falsa sensación de eficiencia
Les hace pensar erróneamente que “PHP no necesita GC”
Pero eso es porque el proceso muere cada vez, no porque el sistema de gestión de memoria sea mejor.
La verdad es:
Java escala mucho mejor en procesos de larga duración y tiene herramientas reales para controlarlo
PHP requiere hacks manuales (gc_collect_cycles, unset, memory_get_usage) si lo usas en workers, CLI o procesos persistentes
Conclusión
Si usas PHP como fue pensado (corto, stateless), el GC no importa.
Pero si haces scripts largos o servicios modernos (como tú estás haciendo), tienes que gestionar la memoria tú, mientras Java lo hace mejor y más automáticamente.
En realidad:
✅ Java tiene un Garbage Collector mucho más avanzado
Varios algoritmos (G1, ZGC, Shenandoah, etc.)
Optimizado para procesos de larga duración (daemons, microservicios)
Recolector concurrente y generacional
Puede hacer profiling en caliente (JVM monitoring, heap dumps, etc.)
⚠️ PHP fue diseñado para scripts cortos
Cada petición limpia el estado por completo
En CLI o workers largos, tiene GC limitado
Su GC solo recolecta ciclos de referencias (no memoria en general)
Hasta PHP 7.3, el GC podía causar más problemas que soluciones (estaba desactivado por defecto en algunas distros)
Entonces… ¿por qué algunos se ríen?
Porque en PHP tradicional (FPM/Apache), todo se limpia al terminar el request, lo cual:
Evita leaks por diseño
Da falsa sensación de eficiencia
Les hace pensar erróneamente que “PHP no necesita GC”
Pero eso es porque el proceso muere cada vez, no porque el sistema de gestión de memoria sea mejor.
La verdad es:
Java escala mucho mejor en procesos de larga duración y tiene herramientas reales para controlarlo
PHP requiere hacks manuales (gc_collect_cycles, unset, memory_get_usage) si lo usas en workers, CLI o procesos persistentes
Conclusión
Si usas PHP como fue pensado (corto, stateless), el GC no importa.
Pero si haces scripts largos o servicios modernos (como tú estás haciendo), tienes que gestionar la memoria tú, mientras Java lo hace mejor y más automáticamente.
Más episodios del podcast El programa definitivo de Piripi
un capitulo corto de prueba
29/10/2025
Test 2 para fans new preview
03/07/2025
Test para fans new preview
03/07/2025
epi para cerrar luego solo a ivoox
27/06/2025
Pozo de Horas Perdidas 2
12/03/2025
La API cachea y no aparecen los audios
12/03/2025
Pozo de Horas Perdidas
12/03/2025
Guell - Episodio exclusivo para mecenas
06/03/2025
hybrid fans definitive 1
06/03/2025
ZARZA Somos ZARZA, la firma de prestigio que esta detras de los grandes proyectos en tecnología de la información.