Я профилировал свое веб-приложение J2EE с помощью jprofiler. Я обнаружил огромную утечку памяти, посмотрев на график телеметрии и записанный объект. Используя обходчик кучи, я пришел к выводу, что существует большая утечка памяти из-за критериев гибернации, 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();
}
Большое спасибо.