Ich programmiere eine Anwendung mit der neuesten Version von Spring Boot. Ich habe vor kurzem Probleme mit wachsenden Haufen, das kann nicht Müll gesammelt werden. Die Analyse des Heaps mit Eclipse MAT zeigte, dass der Heap innerhalb einer Stunde nach Ausführung der Anwendung auf 630 MB anwuchs und mit Hibernate SessionFactoryImpl mehr als 75% des gesamten Heapspeichers nutzte.Spring + Hibernate: Abfrage Plan Cache Speicherauslastung
I war auf der Suche nach möglichen Quellen rund um den Query Plan Cache, aber das einzige, was ich fand, war this, aber das hat nicht spielen. Die Eigenschaften wurden wie folgt festgelegt:
spring.jpa.properties.hibernate.query.plan_cache_max_soft_references=1024
spring.jpa.properties.hibernate.query.plan_cache_max_strong_references=64
Die Datenbankabfragen alle von der Magie Abfrage Frühling erzeugt werden, Repository-Schnittstellen wie in this documentation verwenden. Mit dieser Technik werden etwa 20 verschiedene Abfragen generiert. Kein anderes natives SQL oder HQL wird verwendet. Probe:
@Transactional
public interface TrendingTopicRepository extends JpaRepository<TrendingTopic, Integer> {
List<TrendingTopic> findByNameAndSource(String name, String source);
List<TrendingTopic> findByDateBetween(Date dateStart, Date dateEnd);
Long countByDateBetweenAndName(Date dateStart, Date dateEnd, String name);
}
oder
List<SomeObject> findByNameAndUrlIn(String name, Collection<String> urls);
als Beispiel für den Einsatz in.
Frage ist: Warum wächst der Abfrageplancache weiter (es hört nicht auf, es endet in einem vollen Haufen) und wie man das verhindert? Hat jemand ein ähnliches Problem festgestellt?
Versionen:
- Frühlings-Boot 1.2.5
- Hibernate 4.3.10
Post einige Code und Konfiguration. Haben Sie die Eigenschaften wie in dem Beitrag beschrieben konfiguriert, mit dem Sie verlinkt sind? Wenn Sie sie zu den 'application.properties' hinzufügen, stellen Sie sicher, dass Sie ihnen' spring.pa.properties' voranstellen, sonst werden sie nicht angewendet. Bitte fügen Sie auch die Version von Hibernate hinzu, die Sie verwenden. –
Aktualisierte den Text mit Versionen und Beispielen – LastElb
Konfigurieren Sie die Dinge selbst in Ihrer Anwendungsklasse oder einer anderen '@ Configuration' Klasse? Wenn si bitte hinzufügen. –