Можно ли узнать какой объем памяти занимает переменная?
Допустим в переменную сохраняется объект(или функция, или еще что-то, не важно). Вопрос, можно ли узнать размер того, что сохраняется в переменной. Не типа размер, как длина массива, а именно сколько байт попало в эту переменную? Допустим присваиваю так:
var bar = obj { one: 1; two: 2; } И как-то узнать, сколько переменная bar заняла памяти. Ну или другими словами, сколько байт оказался объект obj. |
ты наверное не знаешь что обьекты не сохраняются в переменные?
п.с. нет нельзя |
Цитата:
Цитата:
|
Цитата:
|
jsuse,
В памяти хранится объект. Переменная указывает на него. Переменная ничего не занимает в памяти. Вес файла и размер занимаемый в памяти во время исполнения, это не одно и тоже. |
Нельзя, js не предоставляет API для работы с памятью он делает это автоматически.
Вот норм ответ. |
Mахmахmахimus,
Аквариум, да ты ваще самый клёвый чувак. Тебе не говорили? :) |
нет
|
Mахmахmахimus,
Ай-яй-яй, плохие люди. :nono: |
ну, а зачем ты нажимаешь на ник когда мы вдвоем болтаем)?
|
Mахmахmахimus,
Так это я тебя выделяю среди всех, ага. |
Цитата:
|
Цитата:
var bar = ""; я резервирую место в памяти. Вот одно это объявление занимает три или четыре байта в памяти, я не помню уже сколько. А вы говорите, что ничего не занимает. |
jsuse,
В памяти лежит не переменная, а строка, если уж абстрактно брать. |
Посмотреть, сколько памяти кто-чего у занял, можно в консоли хрома.
http://code.google.com/chrome/devtoo...profiling.html Желаю Вам удачи. |
переменная указывающая на любой объект занимает 4-8 байт, в зависимости от системы. Остальное считаем по просту:
текстовые данные, хранят двумя видами, первые 2-4 байта размер строки, далее строка. Либо строка и вконце строки нулевой символ указывающий на конец строки. Числовые переменные зависит от типа числа, в JS везде помойму сплошной FLOAT 8-16 байт, булевые значения 1 байт. Примерно все так... хотя по JS я особо не интересовался, но если смотреть на более низком уровне то где-то так. |
jsuse, не скажешь зачем тебе это узнавать? Может есть более лучший способ решить проблему, если она есть конечно.
|
Цитата:
|
Насколько я понимаю, переменная является лишь одним из способов работы с памятью, в которой собственно и хранятся данные (абстрактно, переменная - это именованный контейнер для хранения данных).
Для каждого языка программирования определён список простых типов данных и размер этих типов (то какой размер памяти будут занимать значения этих типов). Размер переменной, хранящей в конкретный момент времени данные простого типа (например, число) как раз равен размеру типа этих данных (обычно это подразумевают под размером переменной с простым значением). Для сложных типов данных (например, объектов) часто используют ссылочную организацию: представляющая сложные данные переменная хранит лишь ссылку на эти данные, а о том как размещаются в памяти сами данные (например, свойства и методы объекта) и то, каким образом разрешать ссылки, заботится интерпретатор. Размер таких переменных равен размеру ссылочного типа данных, представляющих в языке ссылки (сколько памяти отводится под ссылки в javascript точно не знаю, но обычно достаточно 4 байт (2^32 - это более 4*10^9 возможных адресов)). Так как размер переменных с такими данными - это всего лишь размер ссылки, то для таких типов данных обычно существуют функции получения размера самих структур. Так javascript - это не универсальный (как, например, С++, Delphi и т.п.), а специализированный язык, то и средств для реализации универсальности в нём не так много (хотя в последующих версиях языка ничто не мешает их добавить). |
Цитата:
|
Цитата:
Но, в большинстве случаев, в случае с javascript этого и не требуется, так как у javascript другое (специализированное) назначение. |
Цитата:
Цитата:
Вы сами себе противоречите :) |
Цитата:
Кроме того, ничто не мешает сделать на основе javascript среду разработки, не хуже таких как, например, C++Builder или Delphi. В случае с javascript этого не требуется в большинстве случаев только потому, что javascript используется в этом большинстве случаев со специализированной целью (сделать интерактивными веб-страницы). |
Цитата:
|
Часовой пояс GMT +3, время: 06:32. |