Виртуальное адресное пространство в системах на 64 бита, работающих в режиме эмуляции

Здесь вы можете сделать то же самое, что и ваш старый подход, но проблема в том, что вы откладываете отправку формы, так как коллекции HTML занимают больше времени, чем просмотр и управление состояниями. Посмотрите на пример:

import React from 'react';

class Login extends React.Component {
  login(event) {
    event.preventDefault();

    const data = {};
    const inputs = event.getElementsByTagName('input');

    for (let input of inputs) data[input.id] = input.value;

    // send `data` to server to test for login

    console.log(data);
  }

  render() {
    return (
      <form onSubmit={this.login}>
        <input id="email" type="email" />
        <input id="password" type="password" />
        <button type="submit">Login</button>
      </form>
    );
  }
}

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

9
задан Naveen 29 January 2009 в 05:20
поделиться

5 ответов

Microsoft имеет диаграмму, показывающую различные пределы: Пределы Памяти для Windows Releases

Суммировать просто виртуальное адресное пространство непривилегированного режима:

  • 32-разрядный Windows:
    • 32-разрядный процесс: 2 ГБ по умолчанию; 3 ГБ с /LARGEADDRESSAWARE:YES и 4GT
  • 64-разрядный Windows (x64 архитектура):
    • 32-разрядный процесс: 2 ГБ по умолчанию; 4 ГБ с /LARGEADDRESSAWARE:YES
    • 64-разрядный процесс: 8 ТБ по умолчанию; 2 ГБ с /LARGEADDRESSAWARE:NO

4GT настройка на 4 гигабайта:

  • XP: /3GB Переключатель boot.ini
  • Vista: bcdedit /set increaseuserva 3072

Mark Russinovich сделал сообщение в блоге, объяснив много этих пределов: Раздвижение Границ Windows: Виртуальная память

12
ответ дан 4 December 2019 в 19:36
поделиться

Ваш процесс будет только видеть виртуальное адресное пространство на 4 ГБ, когда он будет работать как процесс на 32 бита. Это ничто не сможет к адресам выше.

0
ответ дан 4 December 2019 в 19:36
поделиться

Мой исходный ответ был довольно плох. Вот ссылка, которая объясняет, что JaredPar заявлял вполне прилично.

http://msdn.microsoft.com/en-us/library/ms189334.aspx

0
ответ дан 4 December 2019 в 19:36
поделиться

Что касается аппаратных средств, когда Вы работаете в режиме эмуляции (т.е. IA32_EFER.LMA установлен, и L укусил, ясно в дескрипторе сегмента CS), сегменты ведут себя как 32-разрядные сегменты. Это:

  • начало смещения ограничено 32 битами.
  • предел сегмента ограничен 32 битами также (использующий бит G).

Это эффективно ограничивает Вас 4 ГБ виртуальных адресов. Я не знаком с тем, как виртуальная память разделов ОС в различных режимах, но это - аппаратный предел. (извините... Я - аппаратный парень, не эксперт ОС),

0
ответ дан 4 December 2019 в 19:36
поделиться

Если Ваша программа будет работать как процесс на 32 бита на подсистеме Wow64, то она будет видеть то же самое адресное пространство, которое она видела бы на фактической ОС на 32 бита. Без специальных опций процесс на 32 бита будет иметь 2 ГБ в наличии памяти.

Единственной разницей является доступная память при использовании опции LargeAddressAware. В нормальном процессе на 32 бита это допускает 3 ГБ адресуемой памяти. В процессе Wow64 это видит до 4 ГБ (Источник)

0
ответ дан 4 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: