Профилирах моето J2EE уеб приложение с помощта на jprofiler. Открих, че има огромно изтичане на памет, като погледнах vm телеметричната графика и записания обект. Използвайки heap walker, заключавам, че има много изтичане на памет поради критериите за хибернация, query.list, template.find, прередифицирания hashCode и метода equals и в някои персонализирани процесори за заявки. Нещото, което не мога да разбера, е как може да има изтичане на памет.
Проверих много в Google и е разбираемо, че критериите са по-бавни от HQL и очевидно от SQL, но изтичането на памет е доста интересно. Има ли някакъв шанс за изтичане на памет?
Обектите с hashmap на екрана на записания обект се увеличиха до почти 100% и графиката за изтичане на памет е плавна нагоре.
Също така ви показвам моя хешкод и се равнява на метол, моля, погледнете:
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();
}
Благодаря много.