Я также много боролся с различными вариантами того, как определить в Javascript, отображается ли страница на устройстве с сенсорным экраном или нет. ИМО, на данный момент не существует никакой реальной возможности правильно ее определить. Браузеры либо сообщают о событиях касания на настольных компьютерах (поскольку ОС может быть готова к касанию), либо некоторые решения работают не на всех мобильных устройствах.
В конце я понял, что с самого начала придерживался неправильного подхода: если бы моя страница выглядела одинаково на сенсорных и не сенсорных устройствах, мне, возможно, не пришлось бы вообще беспокоиться об обнаружении свойства: Мой сценарий состоял в том, чтобы деактивировать всплывающие подсказки над кнопками на сенсорных устройствах, поскольку они приводили к двойному нажатию, когда я хотел одним нажатием активировать кнопку.
Мое решение заключалось в рефакторинге вида, чтобы не требовалось всплывающей подсказки над кнопкой, и в итоге мне не нужно было обнаруживать сенсорное устройство из Javascript с помощью методов, которые все имеют их недостатки .
Сначала я хотел бы сделать пояснение. - Предполагая, что вы запускаете приложение как 32-битное приложение, пространство VA, доступное для вашего процесса, составляет всего 2 ГБ, 3 ГБ, если вы включили переключатель большого адресного пространства, поэтому даже если у вас ОГРОМНЫЙ файл подкачки, не имеет значения, если вы 32-битный процесс, это имеет значение, если вы используете 64-битную версию, где у вас огромное адресное пространство.
, так что вы вернете память в одном из этих случаев. Тот факт, что вы нажимаете OOM до достижения лимита 2 ГБ, может означать, что у вас есть фрагментация VA, фрагментация VA происходит, когда у вас нет непрерывного адресного пространства VA для удовлетворения нового распределения, например, вы запрашиваете сегмент 8 КБ, а вы этого не делаете. В вашем виртуальном устройстве есть две последовательные страницы (при условии, что размер страницы 4 КБ)
вы можете использовать расширение отладчика! vamap в инструментах отладки для Windows, чтобы проверить это.
Надеюсь, это поможет Спасибо
Если LOH хочет сохранить память, это зависит от LOH - однако не забывайте, что OutOfMemoryException
относится к каждому процессу, поскольку на самом деле жесткий диск ограничивающий фактор для виртуальной памяти. Эрик Липперт недавно написал об этом в своем блоге. Конечно, это не препятствует снижению производительности при подкачке страниц ...
Что ж, если у вас действительно есть такой шаблон распределения, вы можете переместить свои большие объекты в другой домен приложения - когда вы решите освободить все большие объекты, освободите домен приложения и кучу для этот домен приложения будет освобожден.