应用运行一段时间后发生堆空间不足内存溢出 根据内存快照可见大量org.hibernate.engine.query.spi.QueryPlanCache对象 原因 QueryPlanCache会缓存sql,以便于相同的sql重复编译 如果大量使用in查询,由于参数数量不同,hibernate会把其当成不同的sql进行缓存,从而缓存大量的sql导致heap内存溢出。 解决 添加配置参数限制缓存的s...
27.2.3 @Cacheable中的应用场景 425 27.3 本章小结 427 第28章 QueryPlanCache详解 428 28.1 一级缓存 428 28.1.1 什么是一级缓存 428 28.1.2 一级缓存的作用 429 28.2 QueryPlanCache 432 28.2.1 QueryPlanCache是什么 432 28.2.2 QueryPlanCache存储的内容 433 28.2.3 QueryPlanC...
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153) at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:611) at org.hibernate.internal.Abstract...
getHQLQueryPlan(QueryPlanCache.java:150) at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302) at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240) at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894) at org....
positionExpression = positionExpression.and(position.id.in(QueryPlanCacheOptimizeUtil.convertList(positionIds))); } } } Iterable<Position> positions = positionRepository.findAll(positionExpression); List<Long> userIds = new ArrayList<>();
5.0.12.Final] at org.hibernate.engine.query.internal.NativeQueryInterpreterStandardImpl.getParameterMetadata(NativeQueryInterpreterStandardImpl.java:34) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getSQLParameterMetadata(QueryPlanCache.java:125) ~[...
28.2 QueryPlanCache 432 28.2.1 QueryPlanCache是什么 432 28.2.2 QueryPlanCache存储的内容 433 28.2.3 QueryPlanCache和Session的关系 436 28.3 QueryPlanCache中In查询条件引发的内存泄漏问题 438 28.3.1 In查询条件引发内存泄漏的原因 438 28.3.2 解决In查询条件内存泄漏的方法 440 ...
{Pageable pageable1=null;users=userRepository.findAll(expression,pageable1);}Set<Long>newUserIds=users.getContent().stream().map(AbstractEntity::getId).collect(Collectors.toSet());List<Position>positionsList=positionRepository.findAllByUserIdIn(QueryPlanCacheOptimizeUtil.convertList(newUserIds));Map...
5.0.12.Final] at org.hibernate.engine.query.internal.NativeQueryInterpreterStandardImpl.getParameterMetadata(NativeQueryInterpreterStandardImpl.java:34) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getSQLParameterMetadata(QueryPlanCache.java:125) ~[...
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168) at org.hibernate.internal.AbstractSessionImpl.getHQ...