Koduje aplikację po stronie serwera z uruchomionym java na serwerze Linux. Używam hibernacji do otwierania sesji do bazy danych, używam natywnego sql do wysyłania zapytań i zawsze zamykam tę sesję, spróbuj, złap, wreszcie.Wysoki poziom wykorzystania pamięci podczas korzystania z Hibernate
Zapytanie DB o mój serwer za pomocą hibernacji o bardzo wysokiej częstotliwości.
Już definiuję MaxHeapSize, ponieważ jest to 3000M, ale zwykle korzysta z 2.7 GB pamięci RAM, może się zmniejszyć, ale wolniej niż wzrost. Kiedyś wzrasta zużycie pamięci do 3,6 GB, więcej niż mój MaxHeapSize określić przy starcie.
Gdy używana pamięć to 3,6 GB, próbuję ją zrzucić poleceniem -jmap i otrzymałem stertę o rozmiarze 1,3 GB.
Im przy użyciu Eclipse MAT aby je analizować, oto drzewo dominator od MAT myślę hibernacji jest problem, mam tak wiele org.apache.commons.collections.map.AbstractReferenceMap $ ReferenceEntry tak. Być może nie można go pozbyć się poprzez zbieranie śmieci lub wolno, ale wolno.
Jak mogę to naprawić?
Czy możesz mnie nauczyć trochę więcej? Mam niewielkie doświadczenie w interakcji z bazą danych Oracle. – Viet
Musisz pobrać N wpisów, zaktualizować je, a następnie pobrać następną partia i tak dalej. –
nadal jestem zdezorientowany, w moim zapytaniu "AKTUALIZUJ ... GDZIE ... IN (...) ", Lista zapytań jest niewielka i nie może osiągnąć 1000. I kiedy rozwijam się do drzewa drzewa Dominator w Eclipse MAT, znajduję moje zapytanie (" sqlQueryCheckSet "w moim kodzie), wiele z nich i myślę, że tylko it – Viet