Почему выпущенный релиз WebView на OS X продолжает использовать Real Memory? - PullRequest
2 голосов
/ 18 ноября 2011

Я сделал NSWindow, содержащее WebView.Он загружается из файла пера и отображает веб-страницы в WebView.После закрытия NSWindow / WebView они освобождаются.Если он открывается заново, создается новое NSWindow / WebView и загружается из пера.Release When Closed - это TRUE для NSWindow.

Первый столбец - использование памяти.

  1. 30MB - Загрузка приложения.
  2. 60MB - NSWindow/ WebView создан и загружен из пера.
  3. 160MB - Просмотр многих веб-страниц.
  4. 158MB - NSWindow / WebView закрыто и выпущено.
  5. 158MB -...time проходит ...
  6. 160MB - NSWindow / WebView создан и загружен из пера.
  7. 200MB - Просмотр многих веб-страниц.
  8. 198MB -NSWindow / WebView закрыт и выпущен.
  9. 198MB - ... проходит время ...
  10. 200MB - NSWindow / WebView создан и загружается из пера.
  11. 160MB - Просмотр многих веб-страниц.
  12. 158MB - NSWindow / WebView закрыты и выпущены.
  13. 158MB - ... проходит время ...
  14. 160MB - NSWindow / WebView создан и загружен из пера.
  15. 200MB - Просмотр многих веб-страниц.
  16. 198MB - NSWindow / WebView закрыт и выпущен.

Как видите, Real Memory (сообщаемая Системными настройками) незначительно уменьшаются после того, как NSWindow и его WebView выпущены.Кроме того, кажется, что память расширяется примерно до 200 МБ, а затем колеблется между 160 МБ и 200 МБ, пока приложение не закроется (WebKit выполняет управление памятью за кулисами, я полагаю).

Почему реальная память не уменьшается до30 МБ после выпуска моего NSWindow / WebView?Есть ли способ заставить это сделать это?Или это то, о чем мне даже не стоит беспокоиться?

1 Ответ

1 голос
/ 18 ноября 2011

Вам не стоит об этом беспокоиться, поскольку, вероятно, есть некое закулисное управление памятью, которое удерживает пулы памяти на всякий случай, если они скоро понадобятся.Многие диспетчеры памяти сохраняют резервные пулы памяти для повышения скорости отклика приложений при запросах из этих пулов (избегая системного вызова для увеличения размера кучи).Это, вероятно, происходит, и, вероятно, вы видите, что приложение достигает размера рабочего набора и просто колеблется из-за выделения / освобождения.Это нормальное поведение, и если вы не видите фактических утечек памяти, вам не следует беспокоиться об этом, если это не влияет на производительность приложения или системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...