сборщик мусора java



Автор Вадик рембо задал вопрос в разделе Другие языки и технологии

почему в Java сборщик мусора реализован, а в С++ его нереально реализовать? и получил лучший ответ

Ответ от Ночник[гуру]
Java проги исполняются под чутким руководством JAVA машины, а С++ сам по себе с ним никто не нянчится

Ответ от Jurijus Zaksas[гуру]
Теоретически все возможно, почему бы и нет.
Просто во времена тотального С++ компьютеры не могли себе позволить тратить ресурсы на такие задачи, как отслеживание использования указателей. И до сих пор этот язык используется для создания приложений для систем с ограниченными ресурсами и временем реакции (realtime/embedded).
Еще один момент - арифметика указателей. Значение указателя может измениться, и при этом совершенно неочевидно, что память можно освобождать. Даже наверняка - нельзя.

Ответ от Lord mayton[гуру]
В С++ есть вспомогательные классы (интеллектуальные указатели) которые в некоторой мере облегчают уборку memory leaks. Но поскольку С++ создавался как надстройка над С, который в свою очередь был портабельным ассемблером, то функции по уборке мусора были полностью возложены на программиста. Благодаря этому время очистки детерминировано. Это огромное преимущество для ситем реального времени которые на Java написать практически невозможно. В Java уборщик мусора оставляет за собой право периодически полностью блокировать доступ к участкам памяти для своих нужд уплотнения. И пользовательские процессы в Java периодически замораживаются во времени. Это плата за GC.

Ответ от Ўрий-17[гуру]
Именно на С++ он и реализуется программистами. Но в С++ дело самих программистов: либо менять память на скорость, либо наоборот

Ответ от Vinnitu[гуру]
не сорите!
а если серьезно, то идеалогия языка C++, такова, что подразумевает низкоуровневый доступ к памяти, поэтому все операции делаются руками
но (!) есть реальное подъспорье в этом вопросе, например: используйте классы для работы со строками и вам не прийдется руками выделять память под них; используйте smart-указатели, чтобы автоматически удалять объекты по выходу из области видимости; используйте STL и др.
ну или Managed C++ (это смесь с .net, а там есть GC)

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: почему в Java сборщик мусора реализован, а в С++ его нереально реализовать?
Сборка мусора на Википедии
Посмотрите статью на википедии про Сборка мусора
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*