在使用嵌入式H2SQL v1.4.196的Java应用程序的内存分配优化过程中,我注意到即使在关闭所有H2数据库连接(通过'Connection.close()')之后,甚至在尝试执行'SHUTDOWN'语句之后,仍然是一个背景H2线程运行 - “MVStore $ BackgroundWriterThread”。如果我理解正确 - 它是H2的键值存储引擎。
5 sec memory allocation profiling screenshot
如何正确关闭剩余的H2 SQL线程?到那时,所有活动数据库连接都已关闭。
在应用程序中打开和关闭数据库的方式:
connString = "jdbc:h2:file:" + dbFilename + ";TRACE_LEVEL_FILE=0;PAGE_SIZE=1024;LOG=0;CACHE_SIZE=8192;UNDO_LOG=0";
dbActiveConnection = DriverManager.getConnection(connString, "","");
// Do something
dbActiveConnection.createStatement().execute("SHUTDOWN");
dbActiveConnection.close();
// Rest of work without any database access
// Even after 10 minutes, H2's background thread still running