首页 文章

spring-data-mongodb可能导致内存泄漏

提问于
浏览
0

我正在使用spring-data-mongodb进行内存泄漏 . 基本上我们使用MongoDB作为RDBMS的一种缓存,所以当应用程序启动时,我们加载了一大块数据库 . 所以基本上我们使用不同的“映射”方法将不同的JPA实体映射/非规范化为Mongo文档,如下所示:

@Override
    public void insertFromContacts(Set<Contact> contacts, Long seed){ 
        MutableLong sfId = new MutableLong(seed);

        List<SocialInfo> socialInfos = contacts.stream().map(c -> {
            SocialInfo socialInfo = new SocialInfo();              
            socialInfo.setId(sfId.longValue());
            socialInfo.setSearchOnly(true);
            socialInfo.setStatus(null);
            socialInfo.setContactId(c.getId());
            sfId.increment();
            return socialInfo;
        }).collect(Collectors.toList());

        mongoTemplate.insertAll(socialInfos);
    }

但是内存并没有停止增长,所以我做了堆转储,我意识到spring在内存中保留了大量的BasicDBObject引用,我不知道为什么?
java heap dump

检查到累积点的最短路径时,它显示该类显然是earlyApplicationEvents属性

shortest path to accumulation point

我正在使用: - Java 8 - Spring数据mongodb 1.10.8.RELEASE - Spring数据公共1.13.8.RELEASE - Spring 4.3.6.RELEASE

任何想法为什么?

1 回答

相关问题