Я начал с Java в качестве языка программирования и в течение 3 лет разрабатывал множество приложений только на Java (хорошо, иногда на python). Именно тогда, когда я начал свое первое официальное исследование в области компьютерных наук, я понял, что существует огромный шум и крик об управлении памятью. Я начал заниматься своими проектами в колледже на C/C++ и понял, Уфф!! Мне приходится беспокоиться о том, где мои переменные остаются в памяти, и если они больше не нужны, я тоже должен освободить место. Странно, что до тех пор, пока мы не столкнемся с проблемой, мы никогда не узнаем, что она существует, и она решается за нас (как Java решает ее за нас). Это заинтриговало меня посещать системные занятия в моем колледже, чтобы получить глубокие знания о том, как мусор (т.е. переменные больше не используются) собран на Java и как я беззаботно кодировал на Java в течение 3 лет!
Хорошо, начинаем с нуля. Ты его положил. Во время выполнения, т.е. выполнения программы, этот x будет указывать на местоположение в 4 байта в куче, которое имеет значение 5. Вы использовали этот x в одной строке из ваших 1000 строк кода, а затем больше не использовали его! Что пугает, так это то, что эти 4 байта заблокированы для переменной, которая больше почти не используется в вашей программе. Решение: Использовать меньшие переменные? Невозможно: мы знаем, что эти языки программирования высокого уровня предназначены для того, чтобы дать нам свободу использовать все, что мы захотим! Это то, что помогло программировать и зарабатывать на жизнь, несмотря на то, что у меня никогда не было официального образования в области компьютерных наук! Другое решение: должен быть какой-то способ, чтобы компьютер (очень наивно) продолжал проверять наличие этих оставшихся/неиспользуемых байтов в памяти и продолжал освобождать их для нас.
Существует множество алгоритмов/схем, которые используются в смешанном и совпадающем стиле для выполнения этой автоматической очистки для нас. Они отклоняются от различных логик. Некоторые из этих логик отвечают на следующие вопросы. Поразмышляйте над ними, прежде чем узнать эту логику!
Когда собирать мусор? Как только переменная не используется. Когда память заполнена, т.е. когда это крайне необходимо для этого! Время от времени.
Должны ли мы остановить выделение при сборке мусора?
Следует ли распределять ресурсы таким образом, чтобы сбор мусора был более эффективным и чистым?
Есть ли закономерность в том, как объекты остаются живыми/полезными?
Я постараюсь ответить на эти вопросы с помощью реальных реализаций в своем следующем блоге. А до тех пор Счастливый мусор, ой, я имею в виду кодирование!
Первоначально опубликовано на: https://medium.com/@ishani.gupta27.ig/
Оригинал: “https://dev.to/ishanigupta27/are-you-worried-where-your-garbage-goes-2k4l”