Występuję w problemach, upewniając się, że kontekst aplikacji wiosennej, który niszczyłem, całkowicie zniknął i nie mogę zobaczyć, że obiekt jest zbierany śmieci. Kiedy patrzę na instancję w VisualVM, widzę, że istnieje wiele wyjątkowych odniesień do kontekstu i fabryki fasoli, które pozostają, gdy kontekst zostanie zamknięty i zniszczony. Wszystko to ma związek z początkową konfiguracją fabryki fasoli (podczas odświeżania metody AbstractApplicationContext), która rejestruje fabrykę fasoli i kontekst z różnymi procesorami do przetwarzania ziarna itp.Czysto zniszcz wiosnę Kontekst aplikacji
Nie ma żadnych metod w fabryce fasoli lub w kontekstach aplikacji (nawet tych odświeżalnych), które robią więcej, niż usuwają najniższy poziom odniesienia do fabryki fasoli. W rezultacie wydaje się, że jest to przeciekająca pamięć, aw pewnych okolicznościach uniemożliwia czyste ponowne utworzenie kontekstu.
Pytam, ponieważ obecnie pracuję nad oprogramowaniem, które może dynamicznie tworzyć/niszczyć, a następnie odtworzyć kontekst (ponieważ moduły są dynamicznie ładowane i rozładowywane), a resztki elementów fabryki kontekstu i fasoli są przyczyną problemy z komponentami, takimi jak spring-data-jpa (szczególnie proxy, które wiąże interfejsy repozytorium z implementacjami repozytoriów).
Czy ktoś wie, w jaki sposób mogę całkowicie i czysto usunąć fabrykę kontekstu i fasoli bez konieczności całkowitego zamykania maszyny wirtualnej, która ją utworzyła?
Dzięki, ale jak już wspomniałem, nie ma to nic wspólnego z zamknięciem całego kontenera. Jest to tworzenie/niszczenie kontekstu aplikacji bez wyłączania kontenera, więc hak zamykający nie pomoże. – Mike