我已经在 Wildfly 8.1 上运行了启用 eclipselink v 2.5 的应用程序,我注意到的问题是启动应用程序后内存增加,因为以下类的实例数量巨大(Visaul VM 的快照):
org.eclipse.persistence.internal.identitymaps.HardCacheWeakIdentityMap$ReferenceCacheKey 13083824 13,083,824 (3.1%) 125,806 (1.4%) org.eclipse.persistence.internal.helper.linkedlist.LinkedNode 3020376 3,020,376 (0.6%) 125,849 (1.org.org. eclipse.persistence.indirection.IndirectList 916608 916,608 (0.3%) 14,322 (0.2%)
当我手动启动 GC 时,这些类没有发生任何变化,并且它继续增加实例的总数。
这是我的代码中的一个 EJB 作为示例,它显示了我用来访问持久性上下文的方式:
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import com.sh.entities.Groups;
@Stateless
public class GroupsFacade extends AbstractFacade<Groups> {
@PersistenceContext(unitName = "WebApplication3PU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public GroupsFacade() {
super(Groups.class);
}
public Groups getByGroupName(String name) {
TypedQuery<Groups> query = getEntityManager().createNamedQuery("Groups.findByGroupName", Groups.class);
query.setParameter("groupName", name);
return query.getSingleResult();
}
有谁知道问题出在哪里以及为什么会这样?
谢谢。