El programa definitivo de Piripi

El garbage collector de php no vale nada


Listen Later

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.
...more
View all episodesView all episodes
Download on the App Store

El programa definitivo de PiripiBy Piripi