Вопросы с тегом «garbage-collection»

135
Когда стоит форсировать сборку мусора?

Итак, я читал вопрос о том, как заставить сборщик мусора в C # запускать, когда почти все ответы одинаковы: вы можете сделать это, но не должны - за исключением некоторых очень редких случаев . К сожалению, никто не уточняет, что такое такие случаи. Можете ли вы сказать мне, по какому сценарию на...

99
Стек и куча памяти в Java

Насколько я понимаю, в Java стековая память содержит примитивы и вызовы методов, а кучевая память используется для хранения объектов. Предположим, у меня есть класс class A { int a ; String b; //getters and setters } Где будет храниться примитив aв классе A? Почему куча памяти вообще существует?...

79
Как работает сборка мусора на языках, которые скомпилированы изначально?

После просмотра нескольких ответов о переполнении стека становится ясно, что некоторые скомпилированные в нативе языки имеют сборку мусора . Но мне неясно, как именно это будет работать. Я понимаю, как сборка мусора может работать с интерпретированным языком. Сборщик мусора будет просто работать...

77
Почему объекты Java не удаляются сразу после того, как на них больше нет ссылок?

В Java, как только у объекта больше нет ссылок, он становится пригодным для удаления, но JVM решает, когда объект фактически удален. Чтобы использовать терминологию Objective C, все ссылки на Java по своей природе являются "сильными". Однако в Objective-C, если у объекта больше нет сильных ссылок,...

67
Зачем собирать мусор, если есть умные указатели

В наши дни так много языков собирают мусор. Это даже доступно для C ++ третьими лицами. Но в C ++ есть RAII и умные указатели. Так какой смысл использовать сборщик мусора? Это делает что-то дополнительное? И в других языках, таких как C #, если все ссылки обрабатываются как интеллектуальные...

57
Почему в таких языках, как C и C ++, нет сборки мусора, а в Java - нет? [закрыто]

Ну, я знаю, что есть такие вещи, как malloc / free для C и new / using-a-destructor для управления памятью в C ++, но мне было интересно, почему нет «новых обновлений» для этих языков, которые позволяют пользователю есть возможность вручную управлять памятью, или чтобы система делала это...

56
Когда использовать слабые ссылки в .Net?

Я лично не сталкивался с ситуацией, когда мне нужно было использовать тип WeakReference в .Net, но распространенное мнение, похоже, заключается в том, что его следует использовать в кэш-памяти. Доктор Джон Харроп привел очень хороший аргумент против использования WeakReferences в кешах в своем...

52
Почему умные указатели подсчета ссылок так популярны?

Как я вижу, умные указатели широко используются во многих реальных проектах C ++. Хотя некоторые интеллектуальные указатели, очевидно, полезны для поддержки RAII и передачи прав собственности, также существует тенденция использования общих указателей по умолчанию в качестве способа «сборки мусора»...

51
Что происходит с мусором в C ++?

У Java есть автоматический сборщик мусора, который время от времени останавливает мир, но заботится о мусоре в куче. Теперь приложения на C / C ++ не имеют таких зависаний STW, их использование памяти также не увеличивается бесконечно. Как достигается это поведение? Как ухаживать за мертвыми...

44
Почему метод финализации включен в Java?

Согласно этому посту , мы никогда не должны полагаться на вызываемый метод finalize. Так почему же Java вообще включила его в язык программирования? Кажется ужасным решение включить в любой язык программирования функцию, которая может быть...

38
Недостатки управления памятью на основе областей

Мне действительно нравится управление памятью на основе области (SBMM) или RAII , так как на него чаще всего (сбивает с толку?) Ссылается сообщество C ++. Насколько я знаю, за исключением C ++ (и C), сегодня нет другого основного языка, который бы использовал SBMM / RAII в качестве основного...

34
Переопределение Object.finalize () действительно плохо?

Основными двумя аргументами против переопределения Object.finalize()является то, что: Вы не можете решить, когда это называется. Это не может быть вызвано вообще. Если я правильно понимаю, я не думаю, что это достаточно веские причины, чтобы Object.finalize()так сильно ненавидеть . Именно...

28
Почему сборщик мусора только подметает кучу?

По сути, я до сих пор узнал, что сборка мусора навсегда стирает любую структуру данных, на которую в данный момент не указывается. Но это только проверяет кучу для таких условий. Почему он также не проверяет раздел данных (глобальные переменные, константы и т. Д.) Или стек? Что такого в куче, что...

28
За исключением сборщика мусора, что еще делает Java языком программирования не в реальном времени

Кроме сборщика мусора, какие еще функции в Java делают его неподходящим для программирования в реальном времени? В сети всякий раз, когда Java против C ++ обсуждается в отношении программирования в реальном времени, всегда упоминается сборщик мусора. Есть ли еще...

26
Насколько отличается сборка мусора на чистых языках?

На чистом языке, таком как Haskell, все данные неизменны, и никакие существующие структуры данных не могут быть изменены каким-либо образом. Кроме того, многие алгоритмы неизменяемых данных и шаблоны функционального программирования по своей природе генерируют большое количество мусора (например,...

24
Почему команда в LMAX использовала Java и проектировала архитектуру, чтобы любой ценой избежать GC?

Почему команда в LMAX разработала LMAX Disruptor в Java, но все их разработки сводятся к минимизации использования GC? Если кто-то не хочет запускать GC, зачем использовать язык сборки мусора? Их оптимизация, уровень знаний об оборудовании и мысли, которые они вкладывают, просто потрясающие, но...

24
Каковы сложности неуправляемого программирования памяти?

Или, другими словами, какие конкретные проблемы решает автоматизированная сборка мусора? Я никогда не занимался низкоуровневым программированием, поэтому не знаю, насколько сложным может стать освобождение ресурсов. Ошибки, которые устраняет GC, кажутся (по крайней мере, внешнему наблюдателю)...

23
Демонстрация сборки мусора быстрее, чем ручное управление памятью

Я читал во многих местах (черт, я даже написал так себе) , что сбор мусора может (теоретически) быстрее , чем ручное управление памятью. Однако показать гораздо сложнее, чем рассказать. Я никогда не видел ни одного куска кода, который демонстрирует этот эффект в действии. Кто-нибудь есть (или...

18
Когда сборщик мусора сжимает объекты в куче, он изменяет ссылки в стеке?

Это кажется простым вопросом, но после долгих чтений на эту тему я так и не нашел однозначного ответа (возможно, потому, что это так просто). У меня такой вопрос: когда сборщик мусора сжимает объекты в куче, как обновляются ссылки на эти объекты в стеке? Я могу придумать два возможных решения:...