в винде мб есть способы лениво аллоцировать огромные буферы, через хаки вроде того что с memfd на линуксе
Читать полностью…но оверкоммитинг на линуксе включен везде, без него некоторый софт вообще откажется работать нормально
Читать полностью…если выключить оверкоммитинг, то да, mmap будет действительно резервировать
и соответственно терабайт аллоцировать уже не выйдет
Я хз как сейчас, но лет 10 назад при большом кол-ве тредов и ненастроенном Xss точно возникал OOM.
А после настройки Xss исчезал (Linux, Oracle JDK)
это разве не называется резерв? просто os тебя немного обманывает(но вроде как память тебе обещали)
Читать полностью…Ещё смотрите какая история
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
122552 <user> 20 0 11.9g 4.0g 1.2g S 5.5 12.8 10:25.86 idea
122757 <user> 20 0 13.6g 1.1g 51200 S 0.0 3.4 2:38.77 java
4052 root 20 0 13.4g 914972 14052 S 0.0 2.8 2:15.81 java
5642 <user> 20 0 6393844 779456 88892 S 3.6 2.4 17:46.18 jetbrains-toolb
7020 root 20 0 13.7g 693232 12864 S 0.0 2.1 3:22.60 java
4113 999 20 0 2240100 676052 37200 S 0.5 2.1 23:58.94 java
For JVM processes running on Linux x64, the default stack size is 1 MB, and this space is reserved by the OS each time you launch a new thread. This makes the math pretty simple. For example, 2,000 threads means that 20 GB of stack space needs to be reserved.
Читать полностью…он запрашивает, а не резервирует, пока вы только не начали специально ОС подкручивать
Читать полностью…Разница по выделению памяти между нативным и виртуальным исключительно в гранулярности
Читать полностью…И я точно помню, что читал, что жвм сама динамически размером стэка для виртуальных управляет
Читать полностью…1мб - это один из классических лимитов. Тебе в любом случае нужно установить верхнюю планку, и резервировать сразу по ней довольно глупо.
Читать полностью…