Информация об изменениях

Сообщение Re[9]: 32/64/AnyCPU - что за @$^%$? от 10.10.2016 11:18

Изменено 10.10.2016 11:21 Evgeny.Panasyuk

Здравствуйте, ·, Вы писали:

K>>>>>Итак, повторяю вопрос: причём тут биты в байткоде?

V>>>>32 бита позволяют создавать объекты в памяти не более 2 гигов.
V>>>>Часто нужно больше. Тогда надо принудительно указывать это.
EP>>·>Надо уточнить, что 2г это размер одного объекта. Т.е. например массивы в java индексируются int, т.е. создать массив byte с 3млрд элементов размером 3гб — проблема.
EP>>Речь шла про общее ограничение на доступную память в x32 (без хаков типа PAE), а не про какие-то ограничения индексов массивов в Java в x64.
·>Видимо я что-то не понял, но речь про байткод была. Если пишешь на java, то запускается именно байткод, а там только ограничение связанное с типом индекса массива. Битность физической платформы роли не играет

Играет. На x32 больше 2-4 GiB откусить не получится (без хаков типа PAE).

·>- битность указателя (ссылки) в байткоде не определена,


Она и байткоде .NET не определена, как сказали выше. Меняется только соседствующий с байткодом флажок.

·>Т.е. ограничение 2млрд элементов (не байтов!) в jvm есть только на размеры массивов, а не на общий размер доступной памяти, т.е. с размером адресного пространства и битностью платформы напрямую не связано (связано лишь только существованием осмысленной реалзиации vm).


Ещё раз. Речь про ограничение адресного пространства в x32. Те ограничения Java о которых ты говоришь накладываются уже поверх ограничений адресного пространства — не создашь ты массив с 2мдрд int'ов на x32
А то что у Java проблема с созданием массива в 8млрд байт на x64 — это ортогонально
Re[9]: 32/64/AnyCPU - что за @$^%$?
Здравствуйте, ·, Вы писали:

K>>>>>Итак, повторяю вопрос: причём тут биты в байткоде?

V>>>>32 бита позволяют создавать объекты в памяти не более 2 гигов.
V>>>>Часто нужно больше. Тогда надо принудительно указывать это.
EP>>·>Надо уточнить, что 2г это размер одного объекта. Т.е. например массивы в java индексируются int, т.е. создать массив byte с 3млрд элементов размером 3гб — проблема.
EP>>Речь шла про общее ограничение на доступную память в x32 (без хаков типа PAE), а не про какие-то ограничения индексов массивов в Java в x64.
·>Видимо я что-то не понял, но речь про байткод была. Если пишешь на java, то запускается именно байткод, а там только ограничение связанное с типом индекса массива. Битность физической платформы роли не играет

Играет. На x32 больше 2-4 GiB откусить не получится (без хаков типа PAE).

·>- битность указателя (ссылки) в байткоде не определена,


Она и байткоде .NET не определена, как сказали выше. Меняется только соседствующий с байткодом флажок.

·>Т.е. ограничение 2млрд элементов (не байтов!) в jvm есть только на размеры массивов, а не на общий размер доступной памяти, т.е. с размером адресного пространства и битностью платформы напрямую не связано (связано лишь только существованием осмысленной реалзиации vm).


Ещё раз. Речь про ограничение адресного пространства в x32. Те ограничения Java о которых ты говоришь накладываются уже поверх ограничений адресного пространства — не создашь ты массив с 2мдрд int'ов на x32
А то что у Java проблема с созданием массива в 8млрд байтов (как элементов) на x64 — это ортогонально