В C++, когда в присваивании используется new, это называется распределением динамической памяти, что означает, что вам нужно вручную использовать инструкцию delete [], чтобы вернуть память назад. Но в Java мы не должны использовать delete в конце. Означает ли это, что Java автоматически возвращает память после использования?В чем разница в новой инструкции между C++ и JAVA
ответ
Java использует сборщик мусора, который автоматически восстанавливает память для повторного использования.
Подробнее об этом здесь http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx
Одним из больших различий между C++ и Java является Garbage Collection система Java, которая управляет распределением памяти и открепление. В C++, если вы не удаляете объекты, вы можете вызвать утечку памяти, которая оставляет память непригодной для использования, но Java устраняет эту проблему.
Java и C++ не такие разные, как в первый раз. Вы можете выполнять ручное или автоматическое управление памятью на любом языке.
В C++ ваша программа осознает жизненный цикл объекта и отвечает за освобождение памяти, когда она больше не используется. Это не означает, что он должен быть ручным, это просто означает, что когда память была выпущена, она сразу же доступна.
В C++ вы можете иметь автоматическое управление ресурсами и даже сборку мусора, хотя на этом языке нет требования к этому языку.
В Java это гораздо более косвенное и почти никогда не нужно очищать ресурсы или участвовать в их освобождении. Единственный раз, когда вам нужно это сделать, - это когда ваш объект является прокси-сервером для более дорогого ресурса, такого как файл, сокет, соединение с базой данных или память кучи.
В Java, управление памятью и сборка мусора требуется спецификацией Java Language Specification, и вы можете предположить, что это будет доступно без дополнительных библиотек или для работы с вашей стороны.
Когда новый используется в задании, это не то же самое между C++ и Java. В Java вам предоставляется ссылочный идентификатор, который можно найти, чтобы получить адрес памяти, который затем можно использовать для изменения данных по этому адресу памяти. У Java есть сборщик мусора, который работает, когда он считает нужным (низкое использование ЦП, большая память «мусора»), и он проходит через справочную таблицу и освобождает всю память и удаляет все ссылки, которые больше не используются вашей программой.
С другой стороны, C++ возвращает адрес памяти напрямую. Нет сборщика мусора, который автоматически освобождает данные. удаление требуется для бесплатного удаления данных без какой-либо промежуточной справочной таблицы.
- 1. В чем разница между `| `и` || `в java?
- 2. В чем разница между **/*. Java и * .java?
- 3. В чем разница между java и jsp?
- 4. В чем разница между = и == в java?
- 5. В чем разница между: = и =! в Java?
- 6. В чем разница между% и/в C?
- 7. В чем разница между итераторами в Java и C++?
- 8. В чем разница между многомерным массивом в java и C++?
- 9. В чем разница между PHP и Java?
- 10. В чем разница между JavaScript и Java?
- 11. В чем разница между структурой и новой структурой?
- 12. В чем разница между + = и = +?
- 13. В чем разница между инициализацией String новой String() и новой строкой ("") в Java?
- 14. В чем разница между «» и «»?
- 15. В чем разница между GLSL и c?
- 16. В чем разница между C# и .NET?
- 17. В чем разница между b и c?
- 18. В чем разница между «VC++» и «C++»?
- 19. В чем разница между следующим .... Разница одинакова для c & java?
- 20. В чем разница между && и &?
- 21. В чем разница между метками времени C++ и Java?
- 22. В чем разница между JNI и java wrapper для C
- 23. Selenium C# Java - В чем разница между WebDriver и IWebDriver?
- 24. В чем разница между обработкой исключений C++, Java и JavaScript?
- 25. В чем разница между «./» и «../»?
- 26. В чем разница между __popcnt() и _mm_popcnt_u32()?
- 27. Scrum Terminology: В чем разница между новой функцией и улучшением?
- 28. В чем разница между новой функцией и vm?
- 29. В чем разница между новой переменной $ variable и новым my_model?
- 30. В чем разница между новой строкой (byte []) и DatatypeConverter.printBase64Binary (byte [])?
В Java JVM управляет выделенной памятью, в то время как на C++ вы должны управлять ею самостоятельно ... –
Это в основном называется сборкой мусора – Dici