无状态ejb不会删除池

Tia*_*aga 6 java jboss memory-leaks ejb

我遇到内存泄漏问题,因为EJB没有从池中删除.ejb是3.0并且是无状态的.

In my jboss jmx-console 4.3, the statistics of a particular ejb looks like:

AvailableCount  30
MaxSize     30
CurrentSize     5727
CreateCount     5727
RemoveCount     0
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么"删除计数"没有增加?而"当前大小"是否大于"MaxSize"?

SiB*_*SiB 3

伙计,您遇到了一个可怕的错误,其中 SLSB 未清除并泄漏...几周前我们在生产环境中遇到了这个问题...

JBoss 推荐的唯一解决方法是使用StrictMaxPool而不是ThreadLocalPool用于您的 SLSB。明智地选择计数。

你应该修改ejb3-interceptors-aop.xml

<domain name="Stateless Bean">
...
  <annotation expr="!class(@org.jboss.annotation.ejb.PoolClass)">
     @org.jboss.annotation.ejb.PoolClass (value=org.jboss.ejb3.StrictMaxPool.class, maxSize=30, timeout=10000)
  </annotation>
</domain>
Run Code Online (Sandbox Code Playgroud)

这里有一些链接可以为您提供一些见解......

JBoss 中的无状态会话 Bean 池

在每个 onMessage MDB 调用上注入的新资源实例

ThreadlocalPool 不会从 InfinitePool 中删除活动的 BeanContext 实例