2016-04-05 5 views
1

Ich verwende Cassandra vorbereitete Anweisungen, um meine Abfragen in einer Scala-Anwendung mit dem Datastax Cassandra Java-Treiber auszuführen.Cassandra Bound Statements und Memory Leaking

Wir haben eine bedingte Logik, um zu überprüfen, ob eine gebundene Anweisung basierend auf einem internen Zustand eines Objekts ausgeführt werden sollte. Etwas zu diesem Effekt:

Führt dies zu einem Speicherverlust in unserer Scala-Anwendung oder in Cassandra? Meine Neigung ist es, nein zu sagen, aber ich wollte diese Annahme nicht machen, da ich nicht ganz verstehe, was der Fahrer hinter den Kulissen mit dem bind Anruf macht.

Ich schätze die Hilfe.

+0

Sollte nur GC'ed sein – mmatloka

+0

Das war mein Gedanke auch. Ich möchte sicherstellen, dass auf der Seite von Cassandra nichts passiert ist, wenn ich die Aussage füge. – nattyddubbs

+1

Das macht es noch sinnvoller, die 'bind' innerhalb des' if' zu nennen. Warum binden Sie Variablen an eine Anweisung, wenn Sie sie nicht verwenden möchten? – Aaron

Antwort

3

Die Methode bind() erzeugt bei jedem Aufruf eine neue Instanz von BoundStatement, und session.execute() enthält keinen Verweis darauf, daher wird es GC'ed. Hier besteht kein Risiko von Speicherlecks.

+0

Danke. Ich suchte nach einem Datastax-Eingang :) – nattyddubbs