Zarządzanie pamięcią na Glassfish

Mam kilka zadań w tle uruchomionych na moim serwerze Glassfish zaimplementowanym przez@TimerService instancje. Celem tych usług jest wyodrębnienie danych z plików i wstawienie tych danych do bazy danych.

Początkowo próbowałem to zrobić w JPA, ale system utknął daleko w tyle, że teraz przekonwertowałem proces na JDBC, który jest znacznie bardziej responsywny. Jednak wciąż gdzieś po drodze są ogromne wycieki pamięci, których nie mogę wskazać.

Każdy plik jest wyodrębniany w metodzie, która zarządza własnymi transakcjami (1 plik = 1 transakcja). Sądzę, że gdy ta metoda sfinalizuje wszystkie zmienne, stracą swój zasięg i staną się GC'ed, ale tak nie jest. Po bardzo krótkim czasie doświadczamOutOfMemoryException.

Zastanawiam się, czy i jak i dlaczego Glassfish będzie odnosił się do moich zmiennych (które są bardzo ciężkimi obiektami). Jakie ustawienia lub metodologie mogę zastosować, aby zminimalizować te wycieki pamięci?

Dla porównania używam zapasowych ustawień Glassfish z kilkoma modyfikacjami:

-XX:+CMSPermGenSweepingEnabled 
-XX:+CMSClassUnloadingEnabled 
-XX:MaxPermSize=256m
–XmX1024m

questionAnswers(1)

yourAnswerToTheQuestion