Hazelcast 3.8.2中的内存泄漏

Hazelcast 3.8.2中的内存泄漏,hazelcast,Hazelcast,我们使用的是Vertx 3.5.0+Hazelcast 3.8.2(Vertx以隐式模式启动Hazelcast)。在Prod环境中运行10天后,我们只运行一个节点。我们无法共享堆转储,因为它包含敏感数据 我附上屏幕截图-以防你们能给我任何提示来调试这个问题 它可能与Hazelcast有关,也可能与Hazelcast无关,并且有几个原因——如果没有驱逐,Hazelcast最终将成为一个jvm。您是否可以共享Hazelcast配置并检查Vertx是否为每个缓存操作创建新连接?我们使用Hazelcas

我们使用的是Vertx 3.5.0+Hazelcast 3.8.2(Vertx以隐式模式启动Hazelcast)。在Prod环境中运行10天后,我们只运行一个节点。我们无法共享堆转储,因为它包含敏感数据

我附上屏幕截图-以防你们能给我任何提示来调试这个问题


它可能与Hazelcast有关,也可能与Hazelcast无关,并且有几个原因——如果没有驱逐,Hazelcast最终将成为一个jvm。您是否可以共享Hazelcast配置并检查Vertx是否为每个缓存操作创建新连接?我们使用Hazelcast API进行缓存查找(IMap),为什么Vertx将扮演一个角色?此外,对象的大小是6GB,这绝对是一个红色标志。您是指对象的大小6GB-是一个对象6GB还是整个对象的大小?我认为是后者。你的堆配置是什么?你的驱逐政策是什么?如果看不到Hazelcast配置,什么都做不了。此外,您是为每个缓存查找使用相同的连接还是创建一个新的连接?我们使用HazelcastInstance.getMap(…),然后对其执行#get或#put操作。堆分配为8GB,其中6.2GB由非阻塞SocketWriter本身占用。逐出策略为“无”,缓存中的对象总数约为20K,缓存大小小于50mb左右。缓存每24小时失效一次——基本上我们销毁旧的IMap并创建一个新的IMap(如果您想知道原因,我可以稍后再解释)。我们让Hazelcast决定是否需要在每个put/get操作上创建新连接——尽管我怀疑它是否会在每个put/get操作上创建新连接。