Где хранятся данные

112
Находится в разделах:

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

  •     Регистры. Это самое быстрое хранилище,  потому что данные хранятся прямо внутри процессора. Однако, количество регистров жестоко ограничено, поэтому регистры используются компилятором по мере необходимости. У вас нет прямого доступа к регистрам, вы не можете найти и малейших следов их поддержки в языке.
  •     Стек. Эта область хранения данных находится в общей оперативной памяти (RAM), но процессор предоставляет прямой доступ к ней с использованием указателя стека.  Указатель стека перемещается вниз для выделения памяти или вверх для ее освобождения. Это чрезвычайно быстрый и эффективный способ размещения данных, по скорости уступающий только регистрам. Во время обработки программы, компилятор Java  должен знать жизненный цикл данных, размещаемых в стеке. Это ограничение уменьшает гибкость ваших программ, поэтому, хотя некоторые данные  Java хранятся в стеке (особенно ссылки на объекты), сами объекты Java не помещаются в стек.
  •     Куча. Пул памяти общего назначения (находится так же в RAM), в котором размещаются все объекты Java. Преимущество кучи состоит в том, что компилятору не обязательно знать, как долго просуществуют находящиеся там объекты.  Таким образом, работа с кучей дает значительное преимущество в гибкости. Когда вам нужно создать объект, вы пишете код с использованием new , и память выделяется из кучи во время выполнения программы. Конечно, за гибкость приходится расплачиваться: выделение памяти из кучи занимает больше времени, чем в стеке.
  •     Постоянная память. Значения констант часто встраиваются прямо в код программы, так как они неизменны. Иногда такие данные могут размещаться в постоянной памяти  (ROM), если речь идет о встроенных системах.
  •     Не-оперативная память. Если данные располагаются вне программы, они могут существовать и тогда, когда она не выполняется. Два основных примера: потоковые объекты (streamed objects), в которых объекты представлены в виде потока байтов, обычно используются для посылки на другие машины, и долгоживущие (persistent) объекты, которые запоминаются на диске и сохраняют свое состояние даже после окончания работы программы. Особенностью этих видов хранения данных является возможность перевода объектов в  нечто, что может быть сохранено на другом носителе информации, а потом восстановлено в виде обычного объекта, хранящегося в оперативной памяти. В Java организована поддержка легковесного (lightweight) сохранения состояния, а такие механизмы, как JDBC и Hibernate,  представляют более совершенную поддержку сохранения и выборки информации об объектах из баз данных.

       


Конец
Теодор Рузвельт в свое время заметил, что не стоит повышать голос, но стоит держать наготове большую дубинку, и ты далеко пойдешь.


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

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

 

 

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке