Ho sparato il mio console irb JRuby e digitato:JRuby - Come avviare il garbage collector?
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>
Come posso abilitare o avviare la spazzatura JVM durante un programma manualmente?
Chiedo perché ho un programma che deve generare circa 500 MB di dati di test e salvarlo in MySQL. Il programma utilizza circa 5 livelli di cicli nidificati e si blocca con un'eccezione di memoria JVM dopo aver generato circa 100 MB di dati di test perché non c'è più memoria heap. Vorrei lasciare che il garbage collector funzioni dopo ogni ciclo del ciclo esterno in modo che tutti gli oggetti orfani creati nei loop interni possano essere ripuliti.
È improbabile che aiuti, perché se la JVM ha esaurito la memoria, eseguirà il GC prima di arrendersi. Potrebbe essere necessario assicurarsi di non conservare i riferimenti più a lungo del necessario e/o aumentare le dimensioni dell'heap. – theglauber