disparé mi consola IRB JRuby y proporcionado:JRuby - ¿Cómo iniciar el recolector de basura?
irb(main):037:0* GC.enable
(irb):37 warning: GC.enable does nothing on JRuby
=> true
irb(main):038:0> GC.start
=> nil
irb(main):039:0>
¿Cómo puedo activar o iniciar la basura JVM durante un programa de forma manual?
Lo pido porque tengo un programa que necesita generar unos 500 MBytes de datos de prueba y guardarlos en MySQL. El programa utiliza aproximadamente 5 niveles de bucles anidados y se bloquea con una excepción de almacenamiento dinámico de memoria JVM después de generar aproximadamente 100 MB de datos de prueba porque no hay más memoria de almacenamiento dinámico. Me gustaría dejar que el recolector de basura se ejecute después de cada ejecución del ciclo externo para que todos los objetos huérfanos creados en los bucles internos se puedan limpiar.
Es poco probable que ayude, porque si la JVM se queda sin memoria, ejecutará el GC antes de darse por vencido. Es posible que deba asegurarse de no tener referencias más largas de lo necesario y/o aumentar el tamaño del almacenamiento dinámico. – theglauber