Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли узнать какой объем памяти занимает переменная? (https://javascript.ru/forum/misc/25896-mozhno-li-uznat-kakojj-obem-pamyati-zanimaet-peremennaya.html)

Nekromancer 19.02.2012 20:27

Mахmахmахimus,
Так это я тебя выделяю среди всех, ага.

jsuse 19.02.2012 22:45

Цитата:

Сообщение от Mахmахmахimus (Сообщение 158504)
Нельзя, js не предоставляет API для работы с памятью он делает это автоматически.
Вот норм ответ.

Да, плюсую :)

jsuse 19.02.2012 22:49

Цитата:

Сообщение от Nekromancer (Сообщение 158502)
jsuse,
Переменная ничего не занимает в памяти.

Но это же не так. Когда я объявляю вот так переменную,
var bar = "";

я резервирую место в памяти. Вот одно это объявление занимает три или четыре байта в памяти, я не помню уже сколько. А вы говорите, что ничего не занимает.

Nekromancer 19.02.2012 23:06

jsuse,
В памяти лежит не переменная, а строка, если уж абстрактно брать.

melky 19.02.2012 23:12

Посмотреть, сколько памяти кто-чего у занял, можно в консоли хрома.

http://code.google.com/chrome/devtoo...profiling.html

Желаю Вам удачи.

devote 20.02.2012 12:09

переменная указывающая на любой объект занимает 4-8 байт, в зависимости от системы. Остальное считаем по просту:
текстовые данные, хранят двумя видами, первые 2-4 байта размер строки, далее строка. Либо строка и вконце строки нулевой символ указывающий на конец строки. Числовые переменные зависит от типа числа, в JS везде помойму сплошной FLOAT 8-16 байт, булевые значения 1 байт.
Примерно все так... хотя по JS я особо не интересовался, но если смотреть на более низком уровне то где-то так.

Gozar 20.02.2012 12:47

jsuse, не скажешь зачем тебе это узнавать? Может есть более лучший способ решить проблему, если она есть конечно.

Раед 15.04.2012 00:59

Цитата:

Сообщение от devote
булевые значения 1 байт.

Всю жизнь думал, что 1 бит :D

bes 15.04.2012 17:45

Насколько я понимаю, переменная является лишь одним из способов работы с памятью, в которой собственно и хранятся данные (абстрактно, переменная - это именованный контейнер для хранения данных).

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

Для сложных типов данных (например, объектов) часто используют ссылочную организацию: представляющая сложные данные переменная хранит лишь ссылку на эти данные, а о том как размещаются в памяти сами данные (например, свойства и методы объекта) и то, каким образом разрешать ссылки, заботится интерпретатор.
Размер таких переменных равен размеру ссылочного типа данных, представляющих в языке ссылки (сколько памяти отводится под ссылки в javascript точно не знаю, но обычно достаточно 4 байт (2^32 - это более 4*10^9 возможных адресов)).
Так как размер переменных с такими данными - это всего лишь размер ссылки, то для таких типов данных обычно существуют функции получения размера самих структур.

Так javascript - это не универсальный (как, например, С++, Delphi и т.п.), а специализированный язык, то и средств для реализации универсальности в нём не так много (хотя в последующих версиях языка ничто не мешает их добавить).

Раед 16.04.2012 16:15

Цитата:

Сообщение от bes
средств для реализации универсальности

ЧТо вы понимаете под универсальностью?


Часовой пояс GMT +3, время: 06:29.