在Scala中,以下模式匹配是否会阻止过多的垃圾回收?

时间:2011-09-28 20:40:49

标签: scala

我正在做一些繁重的数据库处理并收到错误消息

  

超出GC开销限额

引起
  

ResultSet getString

在我的代码中,我有以下检查

val myVal = result.getString("COLUMN")
if (myVal == ...) {}

我想知道的是,如果我改变了这个

result.getString("COLUMN") match {
case ...
}

这是否会保存变量,不必创建和垃圾回收?或者这是一些内部机制,这意味着无论如何都会发生这种情况?

编辑:结果是JDBC ResultSet

1 个答案:

答案 0 :(得分:1)

它不会阻止对象分配。该对象由getString分配,而不是由val myVal =分配。 可能做的事情是尽快释放该对象,因为只要没有人引用它就有资格进行垃圾收集。如果你有一个myVal指向它,那么在myVal超出范围之前就不会发生这种情况。

这可能会对你有所帮助,因为非常短暂的物品对于垃圾收集非常便宜。但是,要说实话,似乎不太可能。