2016-06-29 10 views
1

Ich debugge ein Speicherleck in meiner Anwendung, die spring-data-mongodb.1.9.1.RELEASE verwendet.Finde spring-data-mongo MappingContext memory leak

MongoMappingContext verbraucht etwa Drittel der Heap. Es hat einen Verweis auf fast 30k PersistentEntity Objekte von insgesamt über 140MB.

Dieser Speicherverlust wird durch Halten unnötige Verweise auf MongoDB Datenobjekte verursacht, so dass sie nicht Müll gesammelt werden. Warum könnten so viele dieser Objekte in der MappingContext gehalten werden, wenn ich nie diese PersistentEntity Objekte in meinem Code referenziere?

Hat Halten an meine Datenmodell Objekte Ursache Spring Data MongoDB auf zu halten es ist Datenmodell Objekte?

Antwort

3

Sieht aus, als ob Sie in DATACMNS-855 laufen, die in der neuesten Hopper SR2 behoben wurde.

+0

Das hört sich gut an! Kannst du mir helfen, die Versionierung zu verstehen? Ich benutze 'spring-data-commons.1.12.1.RELEASE', dieser Fehlerbericht war für' 1.11.5'. Für welche Version sollte ich fotografieren? –

+0

Wie im Ticket angegeben, wird der Bug in Gosling SR5 (1.11.5), Hopper SR2 (1.12.2) und kommenden Ingalls M1 (1.13.0.M1) behoben. Weitere Informationen zum Versionsschema finden Sie im [Beispiel für die Spring Data Release-Kettenstückliste] (https://github.com/spring-projects/spring-data-examples/tree/master/bom), das wir empfehlen Verwenden Sie die manuelle Deklaration von Versionen für einzelne Module, da die Stückliste sicherstellen wird, dass Sie übereinstimmende Versionen erhalten. Wenn Sie ein Spring-Boot-Benutzer sind, legen Sie einfach die 'spring-data-releasetrain.version'-Eigenschaft auf' Hopper-SR2'. Upcoming Boot 1.4 wird standardmäßig darauf eingestellt. –

+0

Ausgezeichnet, ich wusste nicht über 'spring-data-releasetrain.version'. Du bist ein Lebensretter Oliver. Ich werde wieder einchecken, wenn das das Leck verstopft. –