Estoy desarrollando una aplicación web con Merb y estoy buscando una biblioteca de procesamiento de imágenes segura y estable. Solía trabajar con Imagick en php, luego me mudé a ruby y comencé a usar RMagick. Pero hay un problema. Guiones de ejecución prolongada que causan pérdidas de memoria. Hay una solución de pareja, pero no sé cuál es la más estable. ¿Entonces, qué piensas?¿Cómo lidiar con fugas de memoria en RMagick en Ruby?
En este momento, mi aplicación utiliza API interna que escribí para procesar imágenes, en PHP. Se ejecuta en un servidor separado junto con otras aplicaciones, por lo que no es un gran problema. Pero creo que no es una buena arquitectura.
De todos modos, consideraré cualquier consejo práctico.
sí, fue una de las soluciones de las que me he enterado. pero desde el otro lado, llamar a GC todo el tiempo no es una buena idea (vi un artículo sobre esto hace un tiempo). puede causar desaceleración. y también, gc es una operación muy 'costosa'. im no estoy seguro, pero ahora no tengo opciones. también, hay una versión mejorada de rmagick, pero aún así, tiene pérdidas de memoria, solo es cuestión de tiempo –
Mi consejo sería hacer un perfil de la recolección de basura y ver si puede lidiar con ella. Una alternativa sería ImageScience (http://seattlerb.rubyforge.org/ImageScience.html) pero no es tan capaz como RMagick. – Matt
Al llamar a Image # destroy! en imágenes intermedias, pude reducir el uso de la memoria en un orden de magnitud en mi aplicación Rails vinculada a RMagick, desde 200MB hasta> 40MB. El truco consistía en mantener el número de objetos Magick :: Image/Magick :: ImageList en la memoria RAM al mismo tiempo lo más bajo posible. Llamar a GC.start no fue necesario. – foz