Недавно я наткнулся на следующий фрагмент в существующей кодовой базе, над которой я работаю, и добавил комментарий, который вы видите там. Я знаю, что этот конкретный фрагмент кода можно переписать, чтобы быть более чистым, но мне просто интересно, правильный ли мой анализ.Является ли объявление многих идентичных классов анонимных классов в java?
Будет ли java создавать новое объявление класса и хранить его в пространстве perm gen для каждого вызова этого метода, или он будет знать, чтобы повторно использовать существующее объявление?
protected List<Object> extractParams(HibernateObjectColumn column, String stringVal) {
// FIXME: could be creating a *lot* of anonymous classes which wastes perm-gen space right?
return new ArrayList<Object>() {
{
add("");
}
};
}
Но, возможно, использование внутреннего класса, а не статического вложенного класса, отнимает немного памяти для внешнего $ this указателя (в случае, если это не требуется). Это была бы куча памяти. – Thilo
Дублирующий код загромождает ваш код и затрудняет его поддержание, это должно быть больше беспокоиться. –