Hohe Arbeitsspeicher-Auslastung bei der Verwendung von Hibernate

Code ich eine server-seitige Anwendung, die mit java laufen auf linux-server.
Ich benutze hibernate an open session in Datenbank, den Einsatz von nativen sql-Abfragen und immer in der Nähe dieser session try, catch, finally.

Meine server query DB über hibernate mit sehr hoher Frequenz.

Ich bereits definieren MaxHeapSize denn es ist 3000M, aber es in der Regel verwenden 2.7 GB an RAM, kann es zu verringern, aber langsamer als der Anstieg. Irgendwann wird es wachsen bis zu 3,6 GB Speicherverbrauch, mehr als mein MaxHeapSize definieren, die beim starten.

Wenn der Speicher verwendet wird, ist 3.6 GB, ich versuche es dump mit -Befehl jmap und bekam einen heapdump mit einer Größe von 1,3 GB nur.

Im mit eclipse MAT zu analysieren, hier ist der dominator-Baum von MAT
Hohe Arbeitsspeicher-Auslastung bei der Verwendung von Hibernate
Ich denke, dass hibernate das problem ist, ich habe so viele org.apache.Unterhaus.Sammlungen.Karte.AbstractReferenceMap$ReferenceEntry wie diese. Es ist vielleicht nicht das entsorgen von Müll-Sammlung oder können, aber langsam.

Wie kann ich es beheben?

InformationsquelleAutor Viet | 2014-06-23
Schreibe einen Kommentar