Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey@BeanParam和HK2 ServiceLocatorImpl之间内存泄漏_Java_Jersey_Jersey 2.0_Hk2 - Fatal编程技术网

Java Jersey@BeanParam和HK2 ServiceLocatorImpl之间内存泄漏

Java Jersey@BeanParam和HK2 ServiceLocatorImpl之间内存泄漏,java,jersey,jersey-2.0,hk2,Java,Jersey,Jersey 2.0,Hk2,我们已经在生产中运行jersey一段时间了,最近注意到我们开始泄漏内存。挖掘时,我们发现从HK2 2.3.0开始,HK2类(org.jvnet.HK2.internal.ServiceLocatorImpl.class)中添加了一个injecteeToResolverCache 下面是ServiceLocatorImpl.class中的一行 private final Cache<Injectee, InjectionResolver<?>> injecteeToReso

我们已经在生产中运行jersey一段时间了,最近注意到我们开始泄漏内存。挖掘时,我们发现从HK2 2.3.0开始,HK2类(org.jvnet.HK2.internal.ServiceLocatorImpl.class)中添加了一个injecteeToResolverCache

下面是ServiceLocatorImpl.class中的一行

private final Cache<Injectee, InjectionResolver<?>> injecteeToResolverCache = new Cache<Injectee, InjectionResolver<?>>(new Computable<Injectee, InjectionResolver<?>>()    
似乎正在发生的是,HK2 2.3.0正在将任何标记为BeanParameter的对象的每个实例缓存为injecteeToResolverCache中的注入对象。由于每次调用“getStuff”资源时都会创建“分页”和“筛选”BeanParms的新实例,因此每次调用时都会向缓存中添加2个新条目。在事情开始分崩离析之前,我们在这个缓存中有超过1000万个条目

是否有其他人遇到过这种情况,或者我们是否错误地使用了该框架

现在我们已经降级到jersey 2.8,这似乎是可行的,因为它依赖于Hk2的2.2.0,而Hk2没有注入缓存

谢谢!
Kris

我们已经找到了内存泄漏的可能原因,但它需要在HK2和Jersey之间进行更改。HK2允许其一个API的一些不良使用,该API已被明确检查并被禁止。然而,Jersey以这种方式使用API,这意味着Jersey将不得不更改以执行其他操作。这还没有发生,但会发生。

我建议在这里添加Jira条目。一个简单的用例复制器会很好,但我想这不是必需的…另外,我们可以看看您的InjectionResolver的一些代码吗?ThanksI在Jersey的JIRA()上提交了一个bug,但在HK2上添加一个bug是有意义的。我也会这么做。我们没有任何自定义注入解析器代码。我们所要做的就是使用新的@BeanParam注释,让框架来做其余的事情。感谢您的关注,同时我们将继续使用2.8。您知道更改的目标是什么jersey版本吗?如果没有,我们只需要定期检查发行说明并寻找更新。我会问泽西岛的人
public CustomResponse getStuff(
        @BeanParam Paging paging, @BeanParam CustFilter filter){...