Код: Выделить всё
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 21.17M rw-p 45.42M 45.11M 0K 0K rd wr mr mw me ac sd [heap] │
│---------------------------------------------------------------------------------------------------------------------------│
│ 66.59M 45.42M 45.11M 0K 0K │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 3.50G rw-p 21.50M 12.00M 0K 0K rd wr mr mw me ac sd │
│ ---p 320.00M 0K 0K 0K mr mw me nr sd │
│ rw-p 115.00M 74.63M 0K 0K rd wr mr mw me ac sd │
│ ---p 55.50M 0K 0K 0K mr mw me nr sd │
│ rw-p 2.25M 2.12M 0K 0K rd wr mr mw me ac sd │
│ ---p 1021.75M 0K 0K 0K mr mw me nr sd │
│---------------------------------------------------------------------------------------------------------------------------│
│ 5.00G 1.50G 88.75M 0K 0K │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Выше вы можете видеть, что [куча ] основного потока начинается с адреса 21,17 МБ и заканчивается по адресу 66,59 МБ (поскольку его размер составляет 45 МБ). Однако следующая статистика VMA находится по адресу 3,50 ГБ (который представляет собой память, необходимую JVM, поскольку в нашем процессе есть встроенная JVM, использующая библиотеку JNI). Это означает, что если основная куча попытается превысить размер 3,50 ГБ, она будет конфликтовать со следующей VMA, что удивительно, поскольку 3,50 ГБ на самом деле не такой уж большой разрыв (он большой, да, но не безумно большой). По сути, это устанавливает жесткое ограничение на размер кучи для данного конкретного процесса.
Это «нормально»? Существуют ли какие-либо ограничения на размер одной и той же VMA в Linux? Или JVM предоставляет подсказку для mmap, которая была удовлетворена?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -its-maxim