Если вы хотите освободить ресурсы в определенное время, не зависите от внешнего кода, такого как контейнер сервлета или JVM, для этого. Делайте ваше распределение ресурсов как можно более явным. Противные ошибки могут быть результатом зависимости от внешнего кода, который нужно очистить после вас.