Я профилировал свое веб-приложение J2EE с помощью jprofiler. Я обнаружил огромную утечку памяти, посмотрев на график телеметрии виртуальной машины и записанный объект. Используя heap walker, я пришел к выводу, что существует большая утечка памяти из-за критериев гибернации, query.list, template.find, переопределения hashCode и метода equals, а также в некоторых пользовательских процессорах запросов. Я не могу понять, как может быть утечка памяти.
Я много проверял в Google, и понятно, что критерии медленнее, чем HQL и, очевидно, чем SQL, но утечка памяти довольно интересна. Есть ли вероятность утечки памяти?
Хеш-карта объектов на экране с записанными объектами увеличилась почти до 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();
}
Большое спасибо.