В настоящее время я делаю игру. Я планирую создать множество экземпляров одного класса для части снарядов моей игры. Мне просто интересно, так как я буду создавать множество экземпляров этого класса, и снаряды будут бесполезны, как только они отобразятся на экране, действительно ли это просто создать их? Я знаю, что в java есть мусор, но как я действительно знаю, что экземпляры класса, которые больше не используются, будут деконструированы? О чем я действительно должен беспокоиться?Создание нескольких экземпляров одного и того же класса в java
ответ
Я знаю, что в java есть мусор, но как я действительно знаю, что экземпляры класса, которые больше не используются, будут деконструированы?
Каждый объект, не имеющий ссылки на него (указатель), имеет право на сбор мусора. Это, конечно же, не означает, что он будет немедленно уничтожен, как только он больше не будет ссылаться, но сборщик мусора позаботится об этом, и вы не должны волноваться.
GC намного умнее, чем это. Он не учитывает ссылки. В противном случае древовидная структура, в которой родитель знает своих детей, а дети знают своего родителя (например), никогда не будет GCed. –
@JB Nizet Где я написал, насколько он умный ?. Он спрашивает о «экземплярах класса, которые больше не используются». Я ответил на вопрос. – Alboz
В вашем ответе говорится: «Каждый объект, который не имеет переменной, ссылающейся на него (указатель), имеет право на сбор мусора». Это говорит о том, что объекты, все еще имеющие ссылку на них, не имеют права, и что вы должны убедиться, что для всех ссылок установлено значение null, чтобы сделать объекты подходящими, что неверно. –
Java Virtual Machine (JVM) несет ответственность, чтобы вызвать завершить метод на всех неиспользуемых объектов по телефону:
System.runFinalization();
или
Runtime rt = Runtime.getRuntime();
rt.runFinalization();
Однажды JVM подготовить список неиспользуемых объекты, он вызывает GC (Garbage Collector), предоставляя этот список неиспользуемых объектов.
И, если вы хотите вызвать дс вручную, используйте:
System.gc();
Runtime rt = Runtime.getRuntime();
rt.gc();
или использовать это непосредственно:
Runtime.getRuntime.gc();
Важно: Но в принципе, вы не можете заставить JVM вызывать GC. Скорее вы можете запросить, и этот запрос может или не может очистить память.
В основном это хорошо, чтобы оставить этот вид вещи сборщику мусора. Однако, если вы беспокоитесь о том, что здесь загружались неиспользуемые объекты, занимающие биты памяти, вы можете использовать object pool. Здесь вы создаете фиксированное количество объектов, отслеживаете, что используете, и перерабатываете их, поэтому они ограничены одним блоком памяти.
- 1. Создание нескольких экземпляров одного и того же вектора
- 2. Создание нескольких экземпляров ComObject одного и того же объекта ComObject
- 3. Передача нескольких экземпляров одного и того же класса через объекты
- 4. AS3: избегайте нескольких экземпляров того же класса
- 5. атрибут класса для двух экземпляров одного и того же класса
- 6. Отдельные журналы для нескольких экземпляров одного и того же процесса?
- 7. Android: добавление нескольких экземпляров одного и того же изображения
- 8. Обработка нескольких экземпляров одного и того же компонента в потоке
- 9. Использование нескольких экземпляров одного и того же плагина
- 10. Обновление нескольких экземпляров одного и того же фрагмента диалога
- 11. Оптимизация кода Android/Java - создание нескольких экземпляров одного и того же типа объектов
- 12. Синхронизация нескольких экземпляров одного и того же сценария Greasemonkey
- 13. Оптимальный способ загрузки нескольких экземпляров одного и того же изображения
- 14. Одновременное использование нескольких экземпляров одного и того же пользователя
- 15. Избегайте нескольких экземпляров одного и того же JS-файла
- 16. Истерирование нескольких экземпляров одного и того же UIImageView
- 17. backbone.js - Наличие нескольких экземпляров одного и того же вида
- 18. Angularjs - Обновление нескольких экземпляров одного и того же контроллера
- 19. Добавление нескольких экземпляров одного и того же объекта на сцену
- 20. запуск нескольких экземпляров одного и того же exe
- 21. Как избежать создания нескольких экземпляров одного и того же компонента
- 22. индивидуально предназначаться несколько экземпляров одного и того же класса
- 23. Создание уникального идентификатора и счетчика для экземпляров того же класса
- 24. несколько экземпляров одного и того же типа
- 25. Создание нескольких объектов того же класса
- 26. RMI Java несколько экземпляров одного и того же сервера RMI
- 27. Инверсия управления для нескольких экземпляров того же класса
- 28. выделение нескольких экземпляров одного и того же класса в одной строке
- 29. Spring: Несколько экземпляров контроллер того же класса
- 30. Создание нескольких бинов одного и того же класса с помощью аннотаций Spring
Нет. Вы не должны беспокоиться об уничтожении объектов, которые вы создаете в 'Java'. Только беспокоиться о закрытии их, они указывают на какой-то поток или ресурс. – Tirath
Если GC не собирал объекты, которые больше не используются, не будет ли GC бесполезным? –
Предлагаю использовать пул объектов, затем вы можете перерабатывать уже созданные объекты и уменьшать количество мусора. – Veljko