我使用Cassandra预处理语句使用Datastax Cassandra Java驱动程序在Scala应用程序中执行查询。
我们有条件逻辑来检查并查看绑定语句是否应该根据对象的某个内部状态执行。有这样的效果:
def updateDatabase(x: String, y: String, z: String) = {
val bound = statement.bind(x,y,x)
if(sequence_nr < current){
session.execute(bound)
}
}
这是否会在我们的Scala应用程序或Cassandra中引入内存泄漏?我倾向于拒绝,但不想做出这样的假设,因为我不能完全理解司机在bind
电话的幕后做了什么。
我很感激帮助。
答案 0 :(得分:3)
bind()
方法会在每次调用时生成BoundStatement
的新实例,而session.execute()
不会对其进行任何引用,因此它将被GC编辑。这里没有内存泄漏的风险。