В настоящее время я пишу небольшой сервер для онлайн-игры. Он создает один объект «Сервер», который передает соединения и передачу данных, а также один «игровой» объект за созданную игровую сессию между двумя игроками.Как я могу убедиться, что эти объекты собирают мусор?
Класс «Игра» расширяет «Thread», имея бесконечный цикл в методе run().
Каждый объект «Игра» содержит ссылки на несколько других объектов (например, на доске, так сказать), и сами эти объекты содержат ссылку на соответствующий объект «Игра», поскольку они должны взаимодействовать друг с другом на регулярной основе.
Теперь, когда игра закончилась, и объект «Игра» больше не нужен - какие шаги я должен предпринять, чтобы убедиться, что объект «Игра» получает сбор мусора?
Моя идея была бы:
В объекте «Сервер»: удалить ссылку на объект игры в вопросе.
В каждом объекте, используемом объектом Game: уберите ссылку (nullify?) На объект Game.
Разбить бесконечный цикл, который запускает метод Run() объекта Game.
Будет ли это достаточно, или есть другие шаги, или некоторые из этих шагов не являются обязательными?
Вместо того, чтобы устанавливать объекты в нуль, обычно более целесообразно давать переменным правильную область видимости. – Cruncher
Он, скорее всего, говорит об объектных полях, которые обычно не могут быть уменьшены в области действия меньше, чем объект @Cruncher. – Gray
Я бы сказал, что в любом случае, что вы действительно хотите, чтобы это GC-поля, это примерно то время, когда объект сам по себе, вероятно, больше не существует. Если вы когда-либо устанавливаете его в поле, оно может быть слишком большим. Просто мои 2 цента, я знаю много людей разных взглядов на этом – Cruncher