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.
続きを読む
一部表示