I codice un'applicazione lato server con java eseguito su server linux. Uso la sospensione per aprire la sessione nel database, utilizzare sql nativo per interrogarlo e chiudere sempre questa sessione provando, catturando, infine.Utilizzo memoria elevato durante l'utilizzo di Hibernate
Il mio DB di query del server che utilizza la modalità Hibernate con frequenza molto alta.
Ho già definito MaxHeapSize perché è 3000M ma solitamente utilizza 2.7 GB su RAM, può diminuire ma più lentamente di aumentare. A volte cresce fino a 3,6 GB di memoria, più del mio MaxHeapSize definito all'avvio.
Quando la memoria utilizzata è 3,6 GB, provo a scaricarlo con il comando -jmap e ho ottenuto un heapdump con dimensioni solo di 1,3 GB.
Im usando MAT Eclipse per analizzarlo, ecco l'albero Dominator da MAT Credo che Hibernate è il problema, ho tanti org.apache.commons.collections.map.AbstractReferenceMap $ ReferenceEntry come questo. Forse non può essere smaltito dalla raccolta dei rifiuti o può ma lento.
Come posso risolvere il problema?
Puoi insegnarmi un po 'di più? Ho poca esperienza sull'interazione del database Oracle. – Viet
È necessario recuperare N voci, aggiornarle quindi recuperare il batch successivo e così via. –
sono ancora confuso, nella mia domanda "AGGIORNAMENTO .. DOVE .. IN (...) ", L'elenco delle query IN è piccolo e non può raggiungere 1000. E quando si espande in foglia dell'albero Dominator in MAT eclissi, trovo la mia query di selezione ('sqlQueryCheckSet' nel mio codice), molti di esso, e penso solo it – Viet