если я не закрою набор результатов или подготовленные операторы. Будут ли они закрыты и освобождены сборщиком мусора.
resultset
и preparedstatment
закрыты явновызов метода close
.Сборщик мусора не закроет их.Если вы не вызываете close
, то курсор оракула не освобождается в конце оракула.
Will they be released by the garbage collector.
Обычно объект получает право на сборку мусора в Java в следующих случаях:
- Все ссылки на этот объект явно установлены на нуль, например, object = null
- Объект создается внутри блока, и ссылка выходит из области действия после выхода из этого блока.
- Родительскому объекту присваивается значение null, если объект содержит ссылку на другой объект и когда вы устанавливаете нулевую ссылку на объект контейнера, дочерний или содержащийся объект автоматически становится пригодным для сборки мусора.
- Если объект имеет только живые ссылки через WeakHashMapон будет иметь право на сборку мусора.
для вашего вопроса: я спрашиваю это для локальных переменных внутри функции.
ResultSet Objectсоздается внутри метода, не закрывается, и ссылка выходит из области видимости, как только управление завершает работу этого метода. , тогда ссылка устанавливаетсяк нулю, и объект имеет право на сборку мусора.Я сказал, что право не гарантировано. Базовый курсор оракула все еще находится в базе данных. Потому что вы не вызывали close.