Niedawno zaczęliśmy używać Hibernate i nadal przyzwyczajamy się do jego działania.Jak wymusić hibernację, aby zwolnić pamięć po zamknięciu sesji?
Z rzeczy, które widzieliśmy, wynika z tego, że nawet po zamknięciu wszystkich sesji i znalezieniu referencji poza zakresem, hibernacja nadal zachowuje poprzednio używane wartości bazy danych w pamięci podręcznej.
Mamy kod, który odczytywany jest z zestawu tabel w wielu przejściach. Ponieważ cała pamięć jest uwalniana bardzo oszczędnie, późniejsze przejścia spowalniają do pełzania.
Czy istnieje sposób na wymuszenie hibernacji, aby wyczyścić pamięć podręczną?
Jednoznaczne wywołanie funkcji System.gc() nie pomaga. (Tak, wiem, że to jest sugestia)
Dodatkowe informacje: Zdecydowanie wyłączyliśmy pamięć podręczną drugiego poziomu.
Zakładam, że nie używasz pamięci podręcznej drugiego poziomu Hibernate wtedy? Jakiej strategii używasz do zarządzania sesjami? "Session-per-thread"? –
Używamy session-per-thread, a my jawnie wyłączyliśmy pamięć podręczną drugiego poziomu – StudioEvoque