/ / У чому різниця в новій операції між C ++ і JAVA [дублювати] - java, c ++, управління пам'яттю, new-operator

Яка різниця в новому твердженні між C ++ і JAVA [дублікат] - java, c + +, управління пам'яттю, новий оператор

У C ++, коли нове використовується в призначенні, це "s."називається динамічним виділенням пам'яті, що позначає, що ви повинні вручну використовувати операцію delete [], щоб дати пам'ять назад після. Але в Java, ми не повинні використовувати delete в кінці. Чи означає це, що Java автоматично повертає пам'ять після використання?

Відповіді:

0 для відповіді № 1

Java використовує колектор Garbage, який автоматично повертає пам'ять для повторного використання.
Дізнайтеся більше про це тут http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx


0 для відповіді № 2

Однією з великих відмінностей між C ++ і Java є Java Збирання сміття система, яка обробляє виділення пам'яті та звільнення. У C ++, якщо ви не видаляєте об'єкти, ви можете викликати витоки пам'яті, які залишають пам'ять непридатною, але Java видаляє цю проблему.


0 для відповіді № 3

Java і C ++ не є такими різними, як вперше. Можна виконувати або ручне, або автоматичне керування пам'яттю на будь-якій мові.

У C ++ ваша програма знає про життєвий циклоб'єкт і відповідає за вивільнення пам'яті, коли воно більше не використовується. Це не означає, що воно повинно бути ручним, це просто означає, що після випуску пам'яті воно доступне негайно.

У C ++ можна мати автоматичне управління ресурсами і навіть збір сміття, хоча в мові немає вимоги для цього.

В Java вона набагато більш непряма і майженіколи не потрібно очищати ресурси або брати участь у їх випуску. Єдиний час, коли вам потрібно це зробити, це коли ваш об'єкт є проксі-сервером для більш дорогого ресурсу, такого як файл, сокет, підключення до бази даних або відключена пам'ять.

У Java, специфікація мови Java вимагає управління пам'яттю та збору сміття, і ви можете припустити, що це буде доступно без додаткових бібліотек або роботи з вашої сторони.


0 для відповіді № 4

Коли в призначенні використовується новий, він не єТе ж саме між C ++ і Java. У Java вам буде надано довідковий ідентифікатор, який можна знайти, щоб отримати адресу пам'яті, яку потім можна використовувати для зміни даних на цій пам'яті. У Java є збирач сміття, який працює, коли він вважає за потрібне (низьке використання процесора, багато пам'яті «сміття»), і він проходить через довідкову таблицю, звільняє всю пам'ять і видаляє всі посилання, які більше не використовуються за вашою програмою.

З іншого боку, C ++ повертає адресу пам'ятібезпосередньо. Немає збирача сміття, який автоматично звільняє дані. delete потрібно для вільного звільнення даних безпосередньо, без будь-якої посередницької довідкової таблиці.