Я применяю пул объектов, где мы сталкиваемся с проблемами из-за огромного количества создания объекта. Для этого мне нужен метод clear()
для очистки или восстановления объекта по умолчанию для каждого объекта, как если бы он был вновь созданным объектом. Можно ли это сделать без ручного вызова каждого метода для установки по умолчанию, поскольку это приведет к ошибке, если разработчик забыл обновить clear()
при изменении bean class
.восстановление объекта по умолчанию
ответ
Прежде всего, все нежелательные объекты автоматически собираются сборщиком мусора.
Другой вариант вы должны запросить сборщик мусора с помощью:
System.gc();
ИЛИ
Runtime.getRuntime().gc();
не Вы можете Override finalize method
в классе фасоли
protected void finalize() throws Throwable
{
//Keep some resource closing operations here
}
OP упомянул, что проблема ** создания ** объекта - проблема, а не память (я полагаю, это больше времени, чем проблема с памятью). – Turing85
System.gc(); должен (должен) не использоваться в продуктивном коде. Но в этом случае сборщик мусора должен быть настроен с аргументами. См. Https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ –
Спасибо за исправление –
Существует, безусловно, нет какой-либо вид такого готового решения для вашего дела в Java
. Если вам нужен рабочий ресурс возвратного пула в исходном состоянии, так что вам нужно сделать это самим собой, я имею в виду, что вам нужен метод записи, который поместит все необходимые переменные объекта в начальные значения.
В то же время, я бы сказал, что ваше избегание огромного количества создания объекта здесь неоправданно, пока вы не увидите в профилировщике значительное время этого конкретного события. Я бы также сказал, что из-за сложной структуры ваших классов (поскольку вы не хотите писать этот чистый метод самим собой, я думаю, они сложны) - очистка этих объектов, которые они сами будут брать, сопоставимы с временем создания этого объекта. Объединение в Java
в большинстве случаев используется для действительно дорогостоящих объектов, таких как потоки или соединения БД.
- 1. Восстановление __builtins__ по умолчанию
- 2. Wordpress: восстановление темы по умолчанию.
- 3. Восстановление ключевых слов по умолчанию в Eclipse
- 4. Восстановление контекста дисплея по умолчанию в панд
- 5. WSO2 APIM - Восстановление API по умолчанию
- 6. Python Tkinter - восстановление исходного ключа по умолчанию
- 7. Восстановление приветствия/домашней страницы SharePoint по умолчанию
- 8. Восстановление объекта GUI (JFrame)
- 9. Метод объекта JavaScript по умолчанию
- 10. Функция по умолчанию для объекта?
- 11. Значение по умолчанию для объекта
- 12. JSP Проверка объекта по умолчанию
- 13. Значение по умолчанию объекта Javascript
- 14. Значение по умолчанию атрибута объекта
- 15. Значение по умолчанию массива/объекта по умолчанию Javascript
- 16. ORM - Сохранение/Восстановление значений по умолчанию для объекта БД с помощью C#
- 17. Устранение (и восстановление) значения по умолчанию из текстового ввода
- 18. Восстановление учетных записей Google Cloud Service по умолчанию?
- 19. iScroll 4 - восстановление функции по умолчанию/собственного масштабирования
- 20. Восстановление пучка пути по умолчанию после случайного его удаления
- 21. Восстановление значения выпадающего значения по умолчанию с помощью angularjs
- 22. Git восстановление удаленных файлов - ошибка по умолчанию «HEAD»
- 23. Восстановление состояния MySQL по умолчанию, например транзакций, но глобальных.
- 24. Восстановление записей по умолчанию в базе данных Core Data
- 25. Восстановление отчетов об ошибках по умолчанию в PHP
- 26. восстановление объекта с выхода консоли
- 27. Восстановление объекта из архивного файла
- 28. Заполнение массива рубиновый с объекта по умолчанию
- 29. Установка объекта модели по умолчанию в dropdownChoice?
- 30. Создание объекта с помощью конструктора по умолчанию
Просто мысль, если вы всегда вызываете clear() из конструктора, было бы довольно очевидно, чтобы разработчик niex касался кода, в котором clear() - это то, где происходит инициализация объекта. Конечно, не пуленепробиваемый. Затем вы можете подумать, как далеко вы можете получить автоматические тесты. Если вы сериализуете новый и использованный, но очищенный объект, а сериализации не совпадают, это может быть признаком проблемы, например. –
Не могли бы вы указать вашу проблему? Это память? Это вычислительное время? В случае, если у вас есть проблема с памятью, объединение объектов может быть неэффективным (если данные не вписываются в ОЗУ, это не подходит, никаких исправлений для этого, кроме переосмысления вашей структуры данных). Это похоже на [XY-Problem] (http://xyproblem.info/) для меня. – Turing85