Dopo una recente distribuzione nel test di sistema, uno dei nostri servlet è stato colpito molto più del solito e abbiamo notato che la memoria iniziava a salire e weblogic alla fine sarebbe morto. Il mio stagista, ero molto orgoglioso, ha scoperto la fonte della perdita di memoria.JAXBContext.new Perdita di memoria nell'istanza
Ogni volta che arriva una richiesta, questa linea viene chiamato:
JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);
Per qualche ragione, l'oggetto non viene mai garbage collection. Una volta che l'abbiamo reso statico e spostato dove l'abbiamo inizializzato, la nostra perdita di memoria è scomparsa.
Un altro dei nostri sviluppatori ha inserito solo quella linea in un ciclo while in un'applicazione java autonoma e ha visto anche lo scorrimento della memoria verso l'alto e verso l'alto.
Qualcuno ha qualche idea del perché quell'oggetto non recuperi i rifiuti?
Grazie
collegamento aggiornato: http://jaxb.java.net/guide/Performance_and_thread_safety.html –
@ThangPham - Grazie, ho aggiornato la mia risposta con il nuovo collegamento che avete fornito. –
Anche questo è un problema noto con il rilascio di JAXB per Java 7? La soluzione che hai dato rimarrebbe valida, ma sarebbe bene sapere se questo è ancora qualcosa da guardare attivamente. –