org.hibernate.hql.internal.ast.tree.Node 在 jmap 堆转储中意味着什么
What does org.hibernate.hql.internal.ast.tree.Node means in jmap heap dump
我有一个 spring 启动应用程序使用了 spring 数据。我有本地查询和查询方法。显然我的应用程序面临内存问题。我尝试执行 jmap -histo 以确定使用大量资源的 class。
这是我的第一个 jmap 转储的结果(第一天)-全新开始
然后第二天就是这个结果
注意 org.hibernate.hql.internal.ast.tree.Node 开始出现。
然后第三天
org.hibernate.hql.internal.ast.tree.Node 正在增加内存大小。
希望你能帮助我,或者有什么建议?我没有发布代码,因为我还没有隔离导致此问题的代码。顺便说一句,晚上没有操作所以我期待垃圾收集应该 运行.
我无法回答是什么原因造成的。但是,将 Spring Boot 的版本(这又更新了 Hibernate 版本)更新到 2.2。1.RELEASE 似乎为我解决了这些问题。
我也遇到了同样的问题。以下配置可能会有所帮助。
spring:
jpa:
properties:
hibernate:
query:
plan_cache_max_size: 64
plan_parameter_metadata_max_size: 32
显然,hibernate 正在缓存它的所有查询,这样 hibernate 就不会重新编译准备好的语句,但是如果你有一个动态查询,它将导致内存溢出。
例如:
准备好的声明
Select * from employee where id = :id
-> 这没关系,因为 hibernate 只会缓存准备好的语句,但是如果你这样做
select * from employee where id = 1
select * from employee where id = 2
select * from employee where id = 3
-> Hibernate 将缓存这 3 个语句,因此内存溢出。
我有一个 spring 启动应用程序使用了 spring 数据。我有本地查询和查询方法。显然我的应用程序面临内存问题。我尝试执行 jmap -histo 以确定使用大量资源的 class。
这是我的第一个 jmap 转储的结果(第一天)-全新开始
然后第二天就是这个结果
注意 org.hibernate.hql.internal.ast.tree.Node 开始出现。
然后第三天
org.hibernate.hql.internal.ast.tree.Node 正在增加内存大小。
希望你能帮助我,或者有什么建议?我没有发布代码,因为我还没有隔离导致此问题的代码。顺便说一句,晚上没有操作所以我期待垃圾收集应该 运行.
我无法回答是什么原因造成的。但是,将 Spring Boot 的版本(这又更新了 Hibernate 版本)更新到 2.2。1.RELEASE 似乎为我解决了这些问题。
我也遇到了同样的问题。以下配置可能会有所帮助。
spring:
jpa:
properties:
hibernate:
query:
plan_cache_max_size: 64
plan_parameter_metadata_max_size: 32
显然,hibernate 正在缓存它的所有查询,这样 hibernate 就不会重新编译准备好的语句,但是如果你有一个动态查询,它将导致内存溢出。
例如:
准备好的声明
Select * from employee where id = :id
-> 这没关系,因为 hibernate 只会缓存准备好的语句,但是如果你这样做
select * from employee where id = 1
select * from employee where id = 2
select * from employee where id = 3
-> Hibernate 将缓存这 3 个语句,因此内存溢出。