Я видел много людей в сети, которые утверждали, что «JVM запрашивает непрерывный нефрагментированный блок памяти у ОС при запуске». Я не могу понять, как это соотносится с понятием виртуальной памяти.
ОС может выгружать страницы памяти любого процесса на диск, а затем снова загружать их в ОЗУ - возможно, они будут загружены в разные места. Таким образом, физическая память, используемая процессом, больше не будет смежной.
Что касается виртуальной памяти процесса - она всегда будет "смежной" с точки зрения процесса, поскольку каждый процесс имеет свое собственное адресное пространство.
Итак, что я хотел бы понять:
- Является ли утверждение о том, что память, выделенная ОС для JVM, должна быть
смежной, действительно верной? - Если это так, то как ОС гарантирует, что память остается непрерывной, учитывая, что она может быть выгружена на диск и обратно в ОЗУ?
- Если утверждение неверно, каковы могут быть причины, по которым ОС
будет ли отрицать процесс виртуальной памяти, которую он запрашивает? Память
превышение настроек?