Как стать автором
Обновить

Комментарии 11

Хороший перевод. Вот только где тут мифы?)

НЛО прилетело и опубликовало эту надпись здесь

А мифы на словах велели передать?

НЛО прилетело и опубликовало эту надпись здесь

AloneCoder А как получили файл JVM_memory_use.pdf? Это теоретическая презентация, или в коде JDK ковырялись?

Было бы интересно увидеть поведение jvm в зависимости от ОС. В Linux я не видел, что бы jvm возвращала память назад системе. Обычно после очистки сборщиком, память остаётся зарезервированной для jvm. При попытках сделать стресс тест системе, Linux просто убивал моё приложение как самое прожорливое. На Windows не пробовал, но на Windows например, CLR тоже сначала резервирует память после очистки, но в случае не хватки памяти в ОС, clr быстро худеет.

Если не ошибаюсь возвращать он начал мочь с 11 версии.

Тестировал на jdk 16 с и без параметра на z gc и как-то спустя полчаса простоя jvm так и не отдал зарезервированную память (перед этим хорошенько погонял приложение и хип вырос до 2 gb). Из-за этого боюсь делать микросервисы на jvm и kubernetes т.к. уйду в минус на виртуалках с большим объёмом озу

Сейчас проверил — openjdk version «1.8.0_292» возвращает.
Судя по всему, это во время Major GC происходит, когда сборщик понимает, что такой большой Oldgen больше не нужен. Но на это надеяться нельзя, конечно — проще ограничить память другими средствами.
А можете проверить в jdk 15-16?
Статье-то уже полтора года, оригинал — deepu.tech/memory-management-in-jvm. За это время Z Garbage Collector стал поддерживаться в Macos и Windows(JDK 14) и даже стал production ready в JDK 15.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий