Память

Память #

Вся информация, которой оперирует исполнитель, в хранится у него в памяти. Можно сохранить в памяти число (а мы помним, что всё можно записать при помощи чисел), можно его оттуда извлечь. Между этими операциями они хранится в неизменном виде.

Запоминающее устройство на магнитной ленте, которую можно проматывать вперед-назад, последовательно читая и записывая данные, называется памятью последовательного доступа («Sequential Access Memory», «SAM»). Запоминающее устройство из большого количества пронумерованных ячеек, в поторые можно писать напрямую по их «адресам», называется памятью произвольного доступа («Random Access Memory», «RAM»). Память (любого принципа действия), позволяющая только читать однажды записанные данные, называется ROM («Read Only Memory», «память только для чтения»).

Можно работать с памятью напрямую, но еще лучше оперировать понятиями «температура» и «расстояние». Переменная - это именованная часть памяти для хранения какой-либо информации. Сделано это механизмом под неуклюжим названием «куча» (heap). Кроме операций «прочесть» и «записать», куча предоставляет нам возможность «создать» и «уничтожить». При создании какая-то часть памяти объявляется занятой и связывается с именем переменной, при уничтожении - объявляется свободной и доступной под другие переменные.

Есть особый вид переменных - константы. Когда говорят, что константы это неизменные переменные, наступает логический шок. Но иногда важно знать, что переменная pi всегда будет равна 3.14159265359 и не может быть другой. В таком случае переменную объявляют константой и это означает, что ее значение нельзя изменить. Просто для удобства, потому что чисто технически это все так же именованная честь памяти, в которой может храниться любая информация. Только записать значение в эту переменную значение можно один раз, при создании.

При бесконтрольном создании множества переменных может наступить момент исчерпания доступной памяти - вся она будет занята и создать еще один объект в куче будет невозможно. Эта проблема называется утечкой памяти и во избежание ее нужно проводить «сборку мусора».

Сборка мусора бывает явной и автоматической. При явной сборке мусора программист сам заботится о том, чтобы динамически распределенная память по завершении программы освобождалась. Автоматическая сборка мусора - это программы, которые сами отслеживают использование переменных и оптимизируют процесс очистки.