Каковы "лучшие практики" для создания (и выпуска) миллионов небольших объектов?
Я пишу шахматную программу на Java, и алгоритм поиска генерирует единственный объект Move для каждого возможного перемещения, а номинальный поиск может легко генерировать более миллиона перемещаемых объектов в секунду. JVM GC смог обработать нагрузку на мою систему разработки, но мне интересно изучить альтернативные подходы, которые:
- Свести к минимуму накладные расходы на сбор мусора и
- уменьшить пиковый объем памяти для нижних систем.
Подавляющее большинство объектов очень недолговечны, но около 1% генерируемых движений сохраняются и возвращаются в качестве сохраняемого значения, поэтому любой метод объединения или кэширования должен обеспечивать возможность исключения определенных объектов из повторно использовать.
Я не ожидаю полномасштабного примера кода, но я был бы признателен за предложения по дальнейшему чтению/исследованиям или примеры с открытым исходным кодом аналогичного характера.