我正在做一些繁重的数据库处理并收到错误消息
超出GC开销限额
由
引起ResultSet getString
在我的代码中,我有以下检查
val myVal = result.getString("COLUMN")
if (myVal == ...) {}
我想知道的是,如果我改变了这个
result.getString("COLUMN") match {
case ...
}
这是否会保存变量,不必创建和垃圾回收?或者这是一些内部机制,这意味着无论如何都会发生这种情况?
编辑:结果是JDBC ResultSet
答案 0 :(得分:1)
它不会阻止对象分配。该对象由getString
分配,而不是由val myVal =
分配。 可能做的事情是尽快释放该对象,因为只要没有人引用它就有资格进行垃圾收集。如果你有一个myVal
指向它,那么在myVal
超出范围之前就不会发生这种情况。
这可能会对你有所帮助,因为非常短暂的物品对于垃圾收集非常便宜。但是,要说实话,似乎不太可能。