Любой способ зарезервировать, но не фиксировать память в Linux?

Посмотрите на JFormattedTextField .

30
задан svick 22 August 2013 в 20:23
поделиться

4 ответа

mmap специальный файл, например /dev/zero (или используйте MAP_ANONYMOUS) как PROT_NONE, позже используйте mprotect для фиксации.

31
ответ дан 27 November 2019 в 18:34
поделиться

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

Вот объяснение http://www.mjmwired.net/kernel/Documentation/vm/overcommit-accounting

6
ответ дан 27 November 2019 в 18:34
поделиться

Linux-эквивалентом VirtualAlloc() является mmap(), который обеспечивает такое же поведение. Однако, как отмечает один из комментаторов, резервирование непрерывной памяти - это поведение вызовов malloc() до тех пор, пока память не инициализирована (например, calloc() или пользовательским кодом).

4
ответ дан 27 November 2019 в 18:34
поделиться

"кажущаяся случайной неприемлемая задержка для очень больших массивов

Вы также можете рассмотреть mlock() или mmap() + MAP_LOCKED для уменьшения влияния подкачки. Многие процессоры поддерживают огромные (они же большие) страницы, страницы размером более 4 кб. Эти большие страницы могут уменьшить влияние TLB на потоковое чтение/запись.

1
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

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