Asked
10 years, 6 months ago
Viewed
57k times
Memory Limits for Windows Releases answers what is the maximum amount of memory any single process on Windows can address:
On 32-bit versions of Windows, a single process can map and address no
more than 3GB of virtual memory at time. In 64-bit versions of
Windows, a 32-bit process can map and address no more than 4GB of
virtual memory at a time.For 64-bit processes, the amount is difficult to calculate as there
are numerous overlapping limits that could apply depending on all
kinds of factors. It’s typically around 7TB.
My question: How to verify the values such as «3GB», «4GB» etc.?
Can a C# program be written to prove it? Is there a method for it?
CJBS
14.9k5 gold badges86 silver badges135 bronze badges
asked Aug 9, 2012 at 20:39
3
Mark Russinovich published a multipart series on windows memory resources really covers this very well. You can find it here:
http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx
He covers the reasons why the limits are what they are, as well as tests. The code for the tests are floating around in the tubes somewhere.
If you want to know about memory resources and the problems you can see from leaking the various types, it is a good read.
But, in a nutshell, 32 bit on 32 bit OS: 2 GB, unless set to large address space aware, in which case 3 GB. 32 bit on 64 bit OS: 2 GB, unless set to large address space aware, in which case 4 GB.
64 bit process: 2 GB, unless set to large address space aware, in which case it could address up to 8 TB, unless it is hosted on an Intel Itanium-based systems which is limited to 7 TB.
Microsoft states the various limits (by flavors and types) at:
http://msdn.microsoft.com/en-us/library/aa366778.aspx
answered Aug 9, 2012 at 21:27
StarPilotStarPilot
2,2361 gold badge15 silver badges18 bronze badges
You could write some kind of a loop in a console app to test this.
Maybe create a string that is exactly 1MB and loop through a concatenation process to increase it’s size until you get a … Stack Overflow error.
On each iteration WriteLine the size, or number of iterations.
EDIT
I would add, since STRING is immutable (despite technically being a reference type) to use OBJECT
Edit Two
Trisped points out that a string boxed in an Object is still immutable.
Creating an Array of bytes [1024] should do the trick.
answered Aug 9, 2012 at 20:45
WesleyWesley
5,2719 gold badges40 silver badges63 bronze badges
7
Asked
10 years, 6 months ago
Viewed
57k times
Memory Limits for Windows Releases answers what is the maximum amount of memory any single process on Windows can address:
On 32-bit versions of Windows, a single process can map and address no
more than 3GB of virtual memory at time. In 64-bit versions of
Windows, a 32-bit process can map and address no more than 4GB of
virtual memory at a time.For 64-bit processes, the amount is difficult to calculate as there
are numerous overlapping limits that could apply depending on all
kinds of factors. It’s typically around 7TB.
My question: How to verify the values such as «3GB», «4GB» etc.?
Can a C# program be written to prove it? Is there a method for it?
CJBS
14.9k5 gold badges86 silver badges135 bronze badges
asked Aug 9, 2012 at 20:39
3
Mark Russinovich published a multipart series on windows memory resources really covers this very well. You can find it here:
http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx
He covers the reasons why the limits are what they are, as well as tests. The code for the tests are floating around in the tubes somewhere.
If you want to know about memory resources and the problems you can see from leaking the various types, it is a good read.
But, in a nutshell, 32 bit on 32 bit OS: 2 GB, unless set to large address space aware, in which case 3 GB. 32 bit on 64 bit OS: 2 GB, unless set to large address space aware, in which case 4 GB.
64 bit process: 2 GB, unless set to large address space aware, in which case it could address up to 8 TB, unless it is hosted on an Intel Itanium-based systems which is limited to 7 TB.
Microsoft states the various limits (by flavors and types) at:
http://msdn.microsoft.com/en-us/library/aa366778.aspx
answered Aug 9, 2012 at 21:27
StarPilotStarPilot
2,2361 gold badge15 silver badges18 bronze badges
You could write some kind of a loop in a console app to test this.
Maybe create a string that is exactly 1MB and loop through a concatenation process to increase it’s size until you get a … Stack Overflow error.
On each iteration WriteLine the size, or number of iterations.
EDIT
I would add, since STRING is immutable (despite technically being a reference type) to use OBJECT
Edit Two
Trisped points out that a string boxed in an Object is still immutable.
Creating an Array of bytes [1024] should do the trick.
answered Aug 9, 2012 at 20:45
WesleyWesley
5,2719 gold badges40 silver badges63 bronze badges
7
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 19 |
|
1 |
|
.NET 4.x Максимально доступное количество оперативной памяти для процесса02.08.2013, 11:47. Показов 13525. Ответов 14
Господа. Дело вот такое. Сижу в студии и экспериментирую с ошибкой «outofmemoryexception» (дело в том, что в одном проекте стало беспокоить подобное исключение с недавних пор). Эксперимент представляет собой примитивное приложение WinForm на C# с одной кнопкой. При нажатии кнопки в List<double> начинают бесконечно в цикле добавляться рандомные элементы типа double. Цель программы, посмотреть при каком количестве используемой памяти появится «outofmemoryexception». Так вот. При x86 приложение падает с этим исключением уже при использовании чуть больше 500 мб. Если x64, то чуть больше гигабайта. Свободной памяти предостаточно (12 гб ОЗУ).Если в приложении добавить 2 объекта List (а не один), то эти границы увеличиваются примерно вдвое. Хотя поговаривают, что на x32 максимальный размер процесса в ОЗУ = 2 ГБ, а если это x64, то вообще нереально больше. Возникает такой вопрос. Почему outofmemoryexception появляется гораздо раньше, почему мое приложение не достигает даже 2Гб? Ограничение на размер объекта List? Инфо в сети об этом найти так и не смог.
__________________
0 |
Почетный модератор 8713 / 3665 / 404 Регистрация: 14.06.2010 Сообщений: 4,513 Записей в блоге: 9 |
|
02.08.2013, 13:08 |
2 |
Почему outofmemoryexception появляется гораздо раньше, почему мое приложение не достигает даже 2Гб Вы хотите от системы непрерывный участок памяти в приблизительно 500мб, думаю такой свободный участок далеко не всегда возможно выделить/найти, ваше приложение не одно в системе, кстати, а Вы на 2Gb рассчитываете… Пробуйте создавать объекты в меньшем объеме но в большем количестве (хотя это Вы уже пробовали и получили соответствующий результат).
1 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 19 |
|
02.08.2013, 14:34 [ТС] |
3 |
Вы хотите от системы непрерывный участок памяти в приблизительно 500мб, думаю такой свободный участок далеко не всегда возможно выделить/найти, ваше приложение не одно в системе, кстати, а Вы на 2Gb рассчитываете… Пробуйте создавать объекты в меньшем объеме но в большем количестве (хотя это Вы уже пробовали и получили соответствующий результат). Спасибо. Тогда каким образом на это влияет разрядность приложения? Т.к. на x64 всегда стабильно получается занять в 2 раза больше оперативки Добавлено через 15 минут
0 |
6 / 6 / 0 Регистрация: 10.06.2013 Сообщений: 32 |
|
02.08.2013, 15:05 |
4 |
http://msdn.microsoft.com/en-u… 2ey19.aspx List это обертка над массивом. Когда этот массив заполняется, происходит попытка выделить дополнительную память, кажется вдвое большего размера. Возможно корень проблемы лежит именно здесь. Ограничение по количеству элементов List должно зависеть от типа переменной используемой для индексации массива.
1 |
624 / 495 / 43 Регистрация: 05.07.2010 Сообщений: 1,589 |
|
02.08.2013, 15:09 |
5 |
Насколько я знаю, под C# на платформе x86 больше 2 гБ не занять.
0 |
32 / 39 / 5 Регистрация: 07.09.2011 Сообщений: 108 |
|
02.08.2013, 15:28 |
6 |
Можно попробовать заменть List на LinkedList, связанны список гораздо менее требователен к памяти. Наоборот. Но в нём нет пересоздания внутреннего массива, когда он заполнен, как в List<T>
1 |
6 / 6 / 0 Регистрация: 10.06.2013 Сообщений: 32 |
|
02.08.2013, 15:29 |
7 |
На платформе x64 удавалось 80 гБ оперативки занять. 80 это не технологический предел, просто больше не было надо. Насколько я знаю максимальный размер доступной оперативной памяти зависит от максимального числа, которое может содержать адресный регистр процессора. Для х64 это примерно соответствует 16 гб а на x32/x86 2 гб. Не понимаю как вам удалось выделить 80 гб ОП т.к. это ограничение адресного пространства и процессор физически не сможет обратиться к памяти лежащей за пределами этого значения.
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 19 |
|
02.08.2013, 15:43 [ТС] |
8 |
У меня тогда вопрос в следующем. Предположим из-за фрагментации виртуальной памяти у меня при x86 не удается положить List в память, из-за того, что он уже стал очень большой, т.е когда лист равен 500 мб и соберается сразу увеличиться до 1000 мб, ему просто не находится такой непрерывной памяти. Тогда почему при x64 всегда стабильно удается сохранить в 2 раза больше? Т.е. размер листа стабильно удается сделать чуть больше 1 ГБ
0 |
624 / 495 / 43 Регистрация: 05.07.2010 Сообщений: 1,589 |
|
02.08.2013, 16:20 |
9 |
Насколько я знаю максимальный размер доступной оперативной памяти зависит от максимального числа, которое может содержать адресный регистр процессора. Для х64 это примерно соответствует 16 гб а на x32/x86 2 гб. Не понимаю как вам удалось выделить 80 гб ОП т.к. это ограничение адресного пространства и процессор физически не сможет обратиться к памяти лежащей за пределами этого значения. Ну, моя практика несколько отличается от Вашей теории. Названия приложений замазал, чтобы не прогневать работодателя.
0 |
624 / 495 / 43 Регистрация: 05.07.2010 Сообщений: 1,589 |
|
02.08.2013, 16:22 |
10 |
вторая попытка запостить картинку
0 |
447 / 305 / 47 Регистрация: 23.01.2013 Сообщений: 661 |
|
02.08.2013, 16:41 |
11 |
С чего вы взяли что ограничение 64 битного процесса 16Гб? Максимальное ограничение составляет 8Тб.
0 |
2955 / 2121 / 615 Регистрация: 02.08.2011 Сообщений: 5,838 |
|
02.08.2013, 17:09 |
12 |
С чего вы взяли что ограничение 64 битного процесса 16Гб? Максимальное ограничение составляет 8Тб. У Олиферов в «Сетевые операционные системы» указано, что 64 Тбайта, не помню точно, как подсчитывалось.
0 |
6 / 6 / 0 Регистрация: 10.06.2013 Сообщений: 32 |
|
02.08.2013, 17:21 |
13 |
Взял калькулятор и посчитал, получилось 2048 Петабайт… Так где же истина?
0 |
447 / 305 / 47 Регистрация: 23.01.2013 Сообщений: 661 |
|
02.08.2013, 17:23 |
14 |
У Олиферов в «Сетевые операционные системы» указано, что 64 Тбайта, не помню точно, как подсчитывалось. Возможно, сам цифру не помню, помню что исчисление идет в терабайтах, инфу 8Тб нашел на stack overflow.
1 |
6 / 6 / 0 Регистрация: 10.06.2013 Сообщений: 32 |
|
02.08.2013, 18:02 |
15 |
Что я понял из статьи (где ошибся поправьте): в 64 битной системе: Кому интересны детали вот ссылки:
0 |
Одна из самых интересных и полезных функций Windows 10 — это приоритизация каждого запущенного процесса. Каждая программа, работающая в Windows, имеет уровень приоритета, который определяет, сколько ресурсов она будет потреблять при запуске нескольких программ. Что еще более полезно, так это то, что Windows 10 позволяет вам изменять приоритет запущенных процессов.
Допустим, бывают случаи, когда нам хочется выделить больше ОЗУ для определенного приложения. Выделив больше оперативной памяти для запущенного процесса, можно ускорить время преобразования видео, исправить отставание веб-браузера, ускорить работу программы и многое другое.
Также стоит отметить, что некоторые приложения и игры были предназначены для использования большего объема ОЗУ, поэтому выделение большего объема оперативной памяти для этих конкретных программ или игр позволит им работать без сбоев.
В этой статье мы поделимся подробным руководством о том, как выделить больше оперативной памяти для определенных приложений на компьютерах с Windows 10.
1. Использование диспетчера задач
Вы можете использовать диспетчер задач Windows 10 для определения приоритета определенных приложений. Если вы хотите выделить дополнительную оперативную память какому-либо конкретному приложению, вам необходимо повысить его приоритет в диспетчере задач. Для этого выполните несколько простых шагов, приведенных ниже.
Шаг 1. Прежде всего, щелкните правой кнопкой мыши на панели задач и выберите «Диспетчер задач».
Шаг 2. После того как откроется «Диспетчер задач», выберите вкладку «Подробности».
Шаг 3. На вкладке «Подробности» щелкните правой кнопкой мыши процесс, приоритет которого вы хотите повысить, и выберите параметр «Задать приоритет».
Шаг 4. Вы найдете несколько вариантов. Чтобы повысить приоритет, выберите что-либо выше обычного. Вы можете выбрать «Выше среднего», «Высокий» или «Реального времени».
Шаг 5. В поле подтверждения нажмите «Изменить приоритет».
Таким образом, вы можете использовать диспетчер задач, чтобы выделить больше оперативной памяти для определенных приложений в Windows 10.
2. Укажите объем оперативной памяти для каждой программы
В этом способе мы собираемся указать объем оперативной памяти для каждой программы. Этот метод работает со всеми приложениями, но для демонстрации мы использовали Adobe Photoshop.
Шаг 1. Прежде всего, щелкните правой кнопкой мыши ярлык приложения и выберите «Свойства».
Шаг 2. Теперь перейдите на вкладку «Ярлык».
Шаг 3. В поле «Объект» после .exe поставьте пробел, затем скопируйте и вставьте –disk-cache-size=1073741824. После этого нажмите «ОК».
Важно! При выполнении вышеуказанного действия для Adobe Photoshop будет выделено 1073741824 байта, эквивалентного 1 ГБ ОЗУ. Вы можете изменить размер, но объем ОЗУ должен быть в байтах.
Обычно Windows 10 неплохо справляется с управлением оперативной памятью. Система хорошо знает, сколько памяти выделить каждому приложению. Выделение слишком большого объема оперативной памяти для любого приложения может привести к сбою других приложений или появлению некоторых ошибок.
Поделиться
Согласен с SyavaSyava — винда способна и динамически, и статически выделять память. Тем паче, можно смотреть «чужую» память(!) и даже управлять ей… естественно, ни о каком 2гб на процесс не идет речь. Цифры — это, наверно, ограничение памяти на процесс. Либо вы путаете гб с мб
Программы работают с памятью с помощью указателей на участки памяти (адресов). То есть можно прямо здесь и сейчас взять и попытаться прочитать/записать по любому адресу ячейку памяти. За это программа практически всегда будет убита, но это неважно.
32-разрядные программы работают с 32-разрядными адресами, 64-разрядные — с 64-разрядными.
32-разрядный адрес позволяет обратиться к любой ячейке памяти в пределах 2^32 = 4 ГБ.
64-разрядный адрес — к любой в пределах 2^64 байт.
В случае win32 часть памяти из этих 4 ГБ занята ядром ОС. То есть программа по-прежнему может обратиться к памяти, которая принадлежит ядру и по-прежнему будет убита.
Фактически, максимальный объем памяти в win32, который ОС может выделить программе — около 2 ГБ. Остальная так или иначе недоступна.
При разработке программного продукта для операционной системы семейства Windows необходимо помнить об ограничениях, накладываемых на размер данных, которые программа может объявлять и использовать.
Windows накладывает на программы следующие 3 вида ограничений:
- Статические данные. Ограничение накладывается на размер самого исходного кода программы и размер статически выделяемой памяти. В языке C++ такие данные обычно представлены переменными, объявленными на глобальном уровне вне процедур. Как для 32-битных, так и для 64-битных программ, ограничение на размер статически выделяемой памяти равно 2 GB.
- Динамические данные. Это данные, память на которые динамически выделяется во время исполнения программы. В C++ такое выделение обычно осуществляется функцией malloc или оператором new. В 32-битных программах размер динамически выделяемой памяти ограничен 2 GB, в 64-битных — 8 TB.
- Стековые данные. На них память выделяется при заходе в процедуру и освобождается при её завершении. Максимальный размер стека программы составляет 1 GB и для 32-битных, и для 64-битных приложений. (Размер стека задаётся линковщиком и по умолчанию составляет 1 MB)
У 32-битного приложения запущенного в 32-битной Windows суммарный размер всех перечисленных типов данных не должен превышать 2 GB. (Практически ограничение равно 1.75GB из-за требований к памяти самой операционной системы) 32-битная программа, собранная с ключом /LARGEADDRESSAWARE:YES может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).
Заметим, что ограничения на максимальный размер статически-выделяемой и стековой памяти одинаковы для 32-х и 64-х битных Windows приложений. Это связано с форматом типа файлов Portable Executable (PE), который используется в Windows для описания exe и dll файлов. Статические и стековые данные располагаются в первых 2-х GB адресного пространства приложения. Стоит помнить, что данные ограничения накладываются самой операционной системой и не зависят от используемого компилятора.
Библиографический список
- Steve Lionel. Memory Limits for Applications on Windows
- Андрей Карпов, Евгений Рыжков. Урок 2. Поддержка 32-битных приложений в 64-битной среде Windows
Присылаем лучшие статьи раз в месяц
Содержание
- Способ 1: Общие рекомендации по оптимизации оперативной памяти
- Способ 2: Повышение приоритета игры
- Способ 3: Выделение виртуальной памяти
- Способ 4: Завершение ненужных процессов
- Способ 5: Изменение параметров запуска
- Способ 6: Установка программы для оптимизации игр
- Вопросы и ответы
Способ 1: Общие рекомендации по оптимизации оперативной памяти
Всегда при запуске программ или игр операционная система выделяет то количество ОЗУ, которое требует приложение, а какие-то ограничения устанавливаются лишь в 1% случаев через настройки в играх вручную пользователям. Если вы заметили, что во время игры вам не хватает оперативной памяти, попробуйте сначала выполнить общие действия, относящиеся к ее оптимизации. Понадобится отключить автозагрузку ненужных программ, завершить неиспользуемые приложения и выполнить чистку системного раздела жесткого диска. Есть и другие советы, к которым тоже стоит прислушаться, — перейдите по следующей ссылке, чтобы получить упомянутые инструкции и организовать оптимальную работу ОЗУ на вашем компьютере.
Подробнее: Оптимизация оперативной памяти в Windows 10
Способ 2: Повышение приоритета игры
Каждому процессу при запуске задается свой приоритет, от которого зависит распределение системных ресурсов. По большей части это относится именно к процессору и оперативной памяти, поскольку видеопамять практически не используется для свернутых или фоновых приложений. Вы можете вручную повысить приоритет для необходимых игр после их запуска, чтобы добиться выделения большего количества оперативной памяти. Выполняется эта задача буквально в несколько кликов и выглядит следующим образом:
- Запустите нужную игру, затем сверните ее, щелкните правой кнопкой мыши по кнопке «Пуск» и из появившегося контекстного меню выберите пункт «Диспетчер задач».
- Перейдите на вкладку «Подробности» и найдите там процесс, связанный с вашей игрой.
- Щелкните по строчке правой кнопкой мыши, наведите курсор на «Задать приоритет» и выберите вариант «Высокий», если сейчас установлен другой.
Конечно, вы можете использовать и последний вариант приоритета — «Реального времени», однако во время тестирования разница между предложенными пунктами замечена не была. Поэтому рекомендуем остановиться все-таки на «Высоком», чтобы системные фоновые процессы во время игры не зависали и не вызывали микрофризов.
Способ 3: Выделение виртуальной памяти
Виртуальная память, или файл подкачки, — дополнительное пространство, выделяемое с жесткого диска для оптимизации оперативной памяти. Указанное количество виртуальной памяти используется точно так же, как и ОЗУ, при этом разгружая основное комплектующее. Мы советуем активировать файл подкачки вне зависимости от того, какой штатный объем ОЗУ установлен на вашем компьютере (не относится к 32 ГБ и выше).
- Для этого в поиске «Пуска» начните набирать «Настройка представления и производительности системы», затем перейдите по появившемуся в списке соответствию.
- Откройте вкладку «Дополнительно» и в блоке «Виртуальная память» нажмите кнопку «Изменить».
- Снимите галочку с пункта «Автоматически выбирать объем файла подкачки».
- Выберите любой удобный для вас раздел жесткого диска, на котором хотели бы создать файл с виртуальной памятью, затем отметьте маркером пункт «Указать размер».
- Укажите оптимальный исходный и максимальный размер виртуальной памяти в МБ и примените изменения. Они вступят в силу после перезагрузки компьютера.
Теперь поговорим о том, какое именно количество памяти необходимо выделять для файла подкачки. Устанавливаемый размер зависит от того, сколько изначально у вас есть ОЗУ, а также в каком количестве память используется при штатной работе за компьютером и при запуске требовательных игр. На нашем сайте вы найдете отдельный материал по данной теме и сможете разобраться в том, какие значения устанавливать конкретно в вашем случае.
Подробнее: Определение оптимального размера файла подкачки в Windows
Способ 4: Завершение ненужных процессов
Если для игры не хватает оперативной памяти, лучшим методом добавить ее будет завершение ненужных процессов. Это может быть как браузер, который вы не используете во время прохождения или онлайн-сессии, так и различные необязательные сторонние либо системные приложения. Выше мы уже показывали, как открыть «Диспетчер задач» и перейти к списку процессов. На этот раз щелкните по ненужным правой кнопкой мыши и из контекстного меню выберите пункт «Снять задачу».
Способ 5: Изменение параметров запуска
С помощью ручной установки параметров запуска для приложения можно задать максимальное количество используемой оперативной памяти. Этот вариант подходит в тех случаях, когда по каким-то причинам нужное количество не определяется автоматически и не используется при этом файл подкачки. Сначала разберемся с тем, как установить такой параметр для Steam.
- Запустите лаунчер, перейдите в библиотеку и в списке игр найдите ту, для которой хотите выделить нужное количество оперативной памяти.
- Щелкните по строке с игрой правой кнопкой мыши и из контекстного меню выберите пункт «Свойства».
- В категории «Общие» найдите строку «Параметры запуска» и напишите там
-heapsize 8388608
, где число после команды — количество выделяемой оперативной памяти в КБ (1 МБ = 1024 КБ, 1 ГБ = 1024 МБ).
Если же вы не используете игровой лаунчер, а запускаете игру прямо через ее значок на рабочем столе, то тоже можете выставить необходимый параметр запуска. Для этого изменения вносятся непосредственно во свойства ярлыка и выглядят так:
- Найдите иконку приложения, щелкните по ней правой кнопкой мыши и из контекстного меню выберите пункт «Свойства».
- Перейдите на вкладку «Ярлык» и установите курсор в конце строки «Объект». Не удаляйте текущее содержимое, поскольку оно определяет путь к файлу для запуска.
- Напишите
-heapsize 8388608
, заменив количество оперативной памяти на свое, и сохраните изменения. После этого запустите игру и проверьте изменения в ее производительности.
Отдельно отметим, что во избежание трудностей при переводе гигабайтов в килобайты рекомендуем использовать конвертер величин, доступный непосредственно в поисковике. Вместо него можете открыть любой удобный онлайн-сервис для конвертирования ГБ в КБ, указать нужное значение и скопировать цифры с дальнейшей их вставкой в параметрах запуска.
Способ 6: Установка программы для оптимизации игр
Заключительный наш совет состоит в использовании специальных программ, которые призваны улучшать производительность в играх. Они определяют оптимальные графические настройки, а также при запуске приложений выключают ненужные программы и службы, разгружая тем самым железо для его целевого использования в игре. Есть разные решения по данной теме, каждое из которых имеет свой уникальный набор функций и принцип использования. Рекомендуем ознакомиться с лучшим ПО такого рода в обзорной статье на нашем сайте по следующей ссылке. После выбора софта вы можете установить его и настроить общие параметры либо оптимизировать каждую игру отдельно.
Подробнее: Программы для ускорения игр
Во многих случаях вам необходимо выделить дополнительную оперативную память для игр, особенно если вы используете много модов.
Это верно в таких играх, как Minecraft, а также в таких играх, как Shadow of Mordor, которым нужны колоссальные 8,3 ГБ видеопамяти. Хорошей новостью является то, что вы можете выделить больше оперативной памяти для определенных приложений, чтобы улучшить их производительность.
Что такое оперативная память?
ОЗУ — это аббревиатура от слова «оперативная память», и это одна из самых важных частей вашего компьютера. Оперативная память необходима для работы программ. Без него вы не сможете запускать большинство приложений, а те, которые вы можете запускать, будут работать на значительно более низком уровне.
Думайте об оперативной памяти как об оперативной памяти вашего компьютера. Это позволяет вашей системе получать доступ к данным намного быстрее, чем даже через SSD. Если у вас одновременно работает несколько приложений, вам потребуется больше оперативной памяти, чем если бы вы использовали только несколько одновременно.
В современных компьютерах ОЗУ обычно кратно 4. Материнские платы часто используют так называемую двухканальную память, что означает, что вам нужна ОЗУ одного и того же типа — либо палочки по 4, либо по 8, либо по 16. Нет, верхний предел объема оперативной памяти, который вы можете иметь, за исключением того, что ваша материнская плата может поддерживать, хотя есть предел того, сколько вы можете разумно когда-либо использовать.
Самый простой способ повысить производительность по всем направлениям — разрешить Windows использовать столько оперативной памяти, сколько необходимо для обеспечения производительности.
Найдите приложение «Этот компьютер» и кликните значок правой кнопкой мыши, затем выберите «Свойства». Выберите Расширенные настройки системы -> Настройки. На вкладке «Визуальные эффекты» есть четыре параметра. Выберите параметр «Настроить для наилучшей производительности».
После этого нажмите Применить. Изменения вступят в силу после перезагрузки компьютера. Этот параметр позволяет Windows выделять оперативную память по мере необходимости, чтобы программы работали как можно более плавно.
Приоритет использования ОЗУ
Другой способ убедиться, что у конкретных программ более чем достаточно ОЗУ, особенно если вы запускаете несколько приложений одновременно, — это установить приоритет использования ОЗУ в диспетчере задач. Откройте диспетчер задач и кликните правой кнопкой мыши приложение, которому вы хотите назначить приоритет, затем выберите Перейти к деталям.
Откроется вкладка «Подробности» в диспетчере задач. Кликните процесс правой кнопкой мыши и выберите Установить приоритет. Отсюда вы можете указать, какой приоритет получит программа: в реальном времени, высокий, выше нормального, нормальный, ниже нормального или низкий.
Назначьте использование ОЗУ в определенных программах
Другой вариант — и, возможно, лучший — выделить больше оперативной памяти в рамках настроек данной программы. Это особенно верно в таких играх, как Minecraft, в которые часто играют с модами. Многие модпаки не будут работать правильно, если объем ОЗУ больше установленного по умолчанию.
Имейте в виду, что точный процесс для этого варьируется от программы к программе. Даже в Minecraft процесс выделения оперативной памяти зависит от используемой программы запуска.
В качестве краткого примера вы можете выбрать вкладку «Установки» в средстве запуска по умолчанию, нажать «Создать» -> «Дополнительные параметры» и изменить текст под аргументом JVM с Xmx2G на XmX2n, где n — это объем оперативной памяти, который вы хотите использовать.
Если вы ищете более подробное объяснение, вот еще одна статья, которая может вам помочь.
У каждой игры и программы будет свой метод выделения дополнительной оперативной памяти, если это вообще возможно. Многие приложения запрограммированы на использование определенного количества ОЗУ в зависимости от вашей операционной системы, независимо от того, сколько у вас доступно. Например, Microsoft Excel в 32-разрядных операционных системах ограничен 2 ГБ ОЗУ.
Риски использования слишком большого количества оперативной памяти
По большей части оперативная память безвредна. Маловероятно, что вы нанесете катастрофический ущерб своей системе из-за того, что вы используете слишком много оперативной памяти в приложении — худшее, что может случиться, — это произойдет сбой программы или фоновые программы могут вести себя странным образом.
Однако бывают случаи, когда это может нанести более серьезный ущерб. Любой, кто когда-либо работал с кодированием, сталкивался с ошибкой переполнения стека — проблемой, которая возникает при превышении объема памяти стека вызовов. Эта ошибка приводит к сбою. Подобный тип проблемы часто возникает, когда программа выдает сообщение об ошибке «Не отвечает» в Windows.
Это происходит, когда он превышает выделенный объем ОЗУ и больше не может работать должным образом. Ожидание очистки памяти иногда может решить проблему, но наиболее эффективный метод — принудительно закрыть программу с помощью диспетчера задач.