Каковы последствия не отсоединения сегмента общей памяти - PullRequest
0 голосов
/ 02 июня 2009
  • Каковы последствия не отсоединения сегмента общей памяти?

  • Как разные операционные системы справляются с этим?

  • Не может ли отсоединение нарушить стабильность O.S?

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 июня 2009

Отключение не позволит другим удалить сегмент памяти, это верно для Windows и Linux. Таким образом у вас будет утечка памяти. Это не поставит под угрозу стабильность O.S, но почему вы не захотите отсоединить и удалить сегмент, как только закончите его использовать?

0 голосов
/ 21 июня 2010

Если сегмент совместно используемой памяти не отсоединен, то ядро ​​продолжает думать, что конкретный сегмент (ядро называет его регионом) используется, и никогда не пометит его для удаления - механизм подсчета ссылок используется внутренне. Другая проблема заключается в том, что виртуальное адресное пространство этого процесса будет израсходовано без необходимости.

Тем не менее, я не уверен, что мы можем назвать это утечкой памяти (хотя бы Java), потому что этот сегмент памяти будет отключен и автоматически освобожден в момент завершения процесса.

Это может не поставить под угрозу ОС в целом, но может потребоваться закрыть систему - и это тоже без предупреждения - некоторые процессы, которые потребляют огромную память, если ей не хватает памяти (см. Linux OOM killer). Но это худший случай.

...