我已经使用 jprofiler 分析了我的 J2EE Web 应用程序。通过查看 vm 遥测图和记录的对象,我发现存在巨大的内存泄漏。使用 heap walker,我得出结论,由于休眠条件、query.list、template.find、over-redid hashCode 和 equals 方法以及某些自定义请求处理器,存在大量内存泄漏。我无法理解的是如何可能存在内存泄漏。
我在谷歌上检查了很多,可以理解的是,标准比 HQL 慢,显然比 SQL 慢,但内存泄漏非常有趣。有没有内存泄漏的机会?
在记录对象屏幕下,hashmap 对象增加到近 100%,内存泄漏图向上平滑。
我还向您展示了我的哈希码和等于methol,请看一下:
public boolean equals(Object other) {
if ( !(other instanceof Associate) ) return false;
Associate castOther = (Associate) other;
return new EqualsBuilder()
.append(this.getAssociateId(), castOther.getAssociateId())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(getAssociateId())
.toHashCode();
}
非常感谢。