В Scala будет ли следующий шаблон сопоставлять предотвращать чрезмерную сборку мусора? - PullRequest
0 голосов
/ 29 сентября 2011

Я выполняю тяжелую обработку базы данных и получаю сообщение об ошибке

Превышен предел накладных расходов GC

Вызывается

ResultSet getString

В моем коде у меня есть проверки, такие как следующие

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

Что мне интересно, если я изменю это

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

это избавит переменную от необходимости создавать и собирать мусор?Или это какой-то внутренний механизм, который означает, что это все равно происходит?

Правка: результат - JDBC ResultSet

1 Ответ

1 голос
/ 02 октября 2011

Это не помешает распределению объектов.Объект выделяется getString, а не val myVal =.То, что он может сделать, это освободить объект раньше, так как он будет иметь право на сборку мусора, как только никто не обратится к нему.Если у вас есть myVal, указывающий на него, этого не произойдет, пока myVal не выйдет из области видимости.

Это может помочь вам, поскольку очень недолговечные объекты очень дешевы для сборки мусора.Но, по правде говоря, это кажется маловероятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...