Каковы минимальные гарантии, которые ядро ​​Linux дает для максимального размера кучи основного потока на основе brk?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Каковы минимальные гарантии, которые ядро ​​Linux дает для максимального размера кучи основного потока на основе brk?

Сообщение Anonymous »

Я заметил следующее (это результат моего сценария, который анализирует выходные данные pmap -XX через мой процесс C++, который содержит встроенную машину JVM, использующую JNI):

Код: Выделить всё

└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│    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                                                                   │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Каждое поле представляет различные VMA, которые являются смежными в памяти, за которыми следует пунктирная линия, а затем сумма размеров членов непрерывной области. Первый столбец содержит начальный и конечный адреса региона, выраженные в удобочитаемой форме, чтобы иметь представление о том, насколько далеко друг от друга находятся эти регионы.
Выше вы можете видеть, что [куча ] основного потока начинается с адреса 21,17 МБ и заканчивается по адресу 66,59 МБ (поскольку его размер составляет 45 МБ). Однако следующая статистика VMA находится по адресу 3,50 ГБ. Это означает, что если основная куча попытается превысить размер 3,50 ГБ, она будет конфликтовать со следующей VMA, что удивительно, поскольку 3,50 ГБ на самом деле не такой уж большой разрыв (он большой, да, но не безумно большой). По сути, это устанавливает жесткое ограничение на размер кучи для этого конкретного процесса.
У нас есть пара процессов, которые по ряду устаревших причин занимают около 2 ГБ каждый при запуске программы, поскольку у нас есть независимо выделить около 2 миллионов объектов по несколько килобайт каждый без каких-либо вызовов mmap.
Какие гарантии предоставляет ядро ​​в отношении объема пространства, предоставляемого для основная куча, чтобы свободно расти? Если я заметил, что ядро ​​выделяет VMA по адресу ~3 ГБ, что мешает ему выделить его по адресу 500 МБ? Я предполагаю, что под кучей должно быть гарантировано минимальное пространство, чтобы она могла достаточно вырасти.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ximum-size
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»