首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试创建客户端时Redisson内存泄漏

尝试创建客户端时Redisson内存泄漏
EN

Stack Overflow用户
提问于 2018-08-08 16:14:48
回答 1查看 1.1K关注 0票数 1

当我尝试使用Redisson连接Redis Server时,它有时会显示内存泄漏错误。我怎么才能解决这个问题。重现代码在下面。

预期行为

它不应该有内存泄漏。

实际行为

代码语言:javascript
复制
[main] ERROR io.netty.util.ResourceLeakDetector  - LEAK: HashedWheelTimer.release() was not called before it's garbage-collected. See http://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records: 
Created at:
    io.netty.util.HashedWheelTimer.<init>(HashedWheelTimer.java:272)
    io.netty.util.HashedWheelTimer.<init>(HashedWheelTimer.java:216)
    io.netty.util.HashedWheelTimer.<init>(HashedWheelTimer.java:195)
    org.redisson.connection.MasterSlaveConnectionManager.initTimer(MasterSlaveConnectionManager.java:318)
    org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:161)
    org.redisson.connection.SingleConnectionManager.<init>(SingleConnectionManager.java:34)
    org.redisson.config.ConfigSupport.createConnectionManager(ConfigSupport.java:192)
    org.redisson.Redisson.<init>(Redisson.java:122)
    org.redisson.Redisson.create(Redisson.java:159)
    test.main(test.java:32)

重现或测试用例的步骤

代码语言:javascript
复制
    Codec stringCodec = new StringCodec();

    for (int i = 0; i < 10; i++) {
        RedissonClient client;
        Config config = new Config();
        config.useSingleServer().setAddress(RedisConfig.Address);
        config.useSingleServer().setPassword(RedisConfig.Password);
        config.setCodec(stringCodec);
        client = Redisson.create(config);

        BatchOptions options = BatchOptions.defaults();
        RBatch pipe = client.createBatch(options);

        pipe.getBucket("test", stringCodec).getAsync();
        BatchResult res = pipe.execute();

        System.out.println(res.getResponses().get(0));

        client.shutdown();

        System.gc();
    }

Redis版本

4.0.10

Redisson版本

3.7.5

Redisson配置

代码语言:javascript
复制
Config config = new Config();
config.useSingleServer().setAddress(RedisConfig.Address);
config.useSingleServer().setPassword(RedisConfig.Password);
config.setCodec(stringCodec);
client = Redisson.create(config);
EN

回答 1

Stack Overflow用户

发布于 2018-08-08 21:32:11

这看起来像是Redisson中的一个错误,它在没有关闭这些的情况下创建了大量的HashedWheelTimer。我会在那里打开一个bug报告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51741749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档