Создает ли JVM собственный своп? - PullRequest
0 голосов
/ 22 мая 2019

Создает ли JVM свою собственную память подкачки или она использует память подкачки ОС?Что если в ОС нет подкачки памяти, будет ли JVM привязываться только к ОЗУ?

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

JVM ведет себя так же, как и любой другой процесс, работающий в ядре.Когда JVM требуется пространство кучи, она запрашивает память через вызов библиотеки malloc, который, в свою очередь, использует системный вызов (brk, sbrk или mmap) для выделения пространства с использованием системы виртуальной памяти ОС.Вне зависимости от того, включает ли это подкачку для свопинга, это не имеет отношения к JVM, оно просто запрашивает пространство и оставляет детали до подсистемы ОС VM.

С точки зрения производительности важно помнить об этомпри настройке вашей JVM.Хотя вы можете сделать кучу больше, чем физическая память вашей машины, она будет работать хуже, чем если куча меньше физической памяти.Это является результатом действия по подкачке, которое должно произойти, как только куча превысит физическую память.

Помимо этого, у Азула (на которого я работаю) есть JVM под названием Zing, которая делает вещи немного по-другому.Вместо того, чтобы использовать подсистему Linux VM, у нас есть собственное программное обеспечение уровня ядра (называемое Zing System Tools или ZST).Это позволяет нам обрабатывать виртуальную память специфичным для JVM способом, а не универсальным способом, как это делает Linux.Память может быть возвращена из JVM в ZST, когда она не используется, строки кэша могут быть более оптимизированы, и у нас также есть возможность разрешить JVM превышать настроенный размер кучи, чтобы предотвратить ошибку OOM.

1 голос
/ 22 мая 2019

Виртуальная память - это уловка, используемая многими операционными системами, чтобы во всех практических целях вести себя так, как будто у них больше физической памяти, чем на самом деле. Обычно это невидимо для обычных программ, и операционная система обрабатывает все.

Реализации Java на основе HotSpot - это обычные программы, но они могут расти очень большими. Поэтому важно, чтобы JVM был настроен правильно, чтобы он не занимал слишком много памяти и не вызывал перестановку. Значения по умолчанию обычно разумны.

Итак, вкратце. JVM не занимается обменом - это чисто операционная система.

0 голосов
/ 22 мая 2019

JVM не создает свою собственную память подкачки на диске, она использует подкачку ОС, как и любое другое приложение.Если в ОС не настроен SWAP, она будет привязана к ОЗУ.

...