jvm - H2 数据库(内存模式)关闭不释放内存
问题描述
我正在使用具有以下配置的内存 h2 数据库:
jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
hibernate.dialect=org.hibernate.dialect.H2Dialect
jdbc.user=sa
jdbc.pass=
我可以看到系统上使用的内存不断减少。一旦我重新启动应用程序,内存就会恢复。我得到了内存转储,但它没有显示任何占用大量内存的正在运行的线程。我猜这是因为 h2 数据库。
我检查了 jmap 结果,它显示以下内容:
前:
我尝试使用 h2 关闭并手动调用 System.gc()。这有助于 jmap 如下所示:
后:
但是,释放的内存永远不会到达操作系统/系统。使用的内存既不会下降也不会增加可用内存!
我在这里想念什么?如果内存不断增加,我的机器运行几天后总是会死机?不能保持每2天重新启动一次!
解决方案
推荐阅读
- python - 清理 Pandas 市场摊位的销售数据;拆分行
- python - Python selenium webriver 错过了元素而没有给出任何错误
- c - 将字符串转换为双精度,答案是正确的,但不是很准确
- java - 用 Java 将 [chained] CompletableFutures 写入 CSV
- c# - 在 .Net 5 Core Web 应用程序中,有没有办法在 AppPool 回收后持久登录用户的会话?
- image-processing - 如何将高斯的拉普拉斯算子用于椭圆斑点?
- javascript - 删除单词和周围的换行符
- javascript - 如何添加与 js 之间有空格的属性?
- reactjs - 在 React 中使用 Chart.js 对折线栏产生辉光效果
- node.js - 您如何将某些内容传递给路由器?