Неправда, что объект будет автоматически освобожден до того, как вы его сохраните. Подробные сведения о том, когда пул очищается, не важны для ответа на этот вопрос, за исключением того, что это не может произойти во время вашего кода , если вы не вызовите утечку или освобождение в пуле. Если ваша функция вызывает другую функцию, за исключением некоторых конкретных крайних случаев, и функция, которую вы вызываете, и функция, из которой вы вызвали, должны выйти, прежде чем этот поток сможет сделать что-то еще. Пул автоматического выпуска зависит от потока.
Чтобы ответить на ваш второй вопрос, если вы выделяете объект, вы должны освободить его, когда закончите его использовать. Просто как тот. Это включает в себя, когда вы передаете его другому коду, который нуждается в нем, потому что этот другой код должен претендовать на право владения, если это необходимо.