Может быть, я не понимаю вопроса. Чтобы быть более понятным, если вы выключите Tomcat (и, следовательно, это JVM), то ни Tomcat, ни его пулы соединений, ни какой-либо из потоков его демонов не будут работать ... и, следовательно, ссылки на память не останутся в буфере.
Как именно вы пришли к выводу, что ресурс Tomcat имеет ссылку на пул соединений после завершения работы Tomcat? Вы не сможете увидеть это в профилировщике, и, честно говоря, это не совсем имеет смысла. Например, возможно ли, что ОС будет держать соединения открытыми в течение короткого периода времени, прежде чем уничтожать их? Вы пробовали те же тесты, используя ту же ОС, но вместо этого с другим контейнером, чем-то вроде Jetty? Используете ли вы keep-alive или какие-то постоянные соединения?
Если вы хотите не справляться с управлением Tomcat ресурсом, предоставляемым через JNDI, вы можете создать собственную реализацию DataSource, которая делегирует H2SSource. Вы можете сделать это, используя атрибут factory-method в вашем server.xml (или context.xml)
Вот рабочий пример на github: https://github.com/tvollmer/connection-factory
Кроме того, было бы полезно, если бы вы могли уточнить, что вы подразумеваете под «различными проблемами при выключении». Эти детали имеют значение, и мне не ясно, как вы логически перешли от «различных проблем» к утверждению, что Tomcat «не располагает пулом соединений». Здесь вы можете столкнуться с двумя совершенно разными проблемами и, возможно, захотите проверить параметры antiResourceLocking и antiJARLocking для Tomcat в Windows.