/ / Каква е разликата в новото изявление между C ++ и JAVA [дубликат] - java, c ++, управление на паметта, нов оператор

Каква е разликата в новото изявление между C ++ и JAVA [duplicate] - java, c ++, управление на паметта, нов оператор

В C ++, когато се използва нова в заданието, тя енаречена динамично разпределение на паметта, което означава, че трябва ръчно да използвате оператора delete [], за да дадете паметта след това. Но в Java, ние не трябва да използваме изтриване в края. Това означава ли 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 Language Specification и можете да приемете, че това ще бъде достъпно без допълнителни библиотеки или работа от ваша страна, за да се случи.


0 за отговор № 4

Когато в заданието се използва ново, то не есъщото между C ++ и Java. В Java ви се дава идентификационен номер за справка, който може да се търси, за да получите адреса на паметта, който след това можете да използвате, за да промените данните на този адрес на паметта. Java има колектор за боклук, който работи, когато мисли, че е подходящ (ниско потребление на процесора, много "памет" за боклук) и преминава през референтната таблица и освобождава цялата памет и изтрива всички препратки, които вече не се използват. от вашата програма.

От друга страна, C ++ връща адрес на паметдиректно. Няма колектор за боклук, който автоматично освобождава данни. изтриване се изисква за освобождаване на данните директно, без посредническа справочна таблица.