Pull to refresh

Comments 11

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

UFO just landed and posted this here
UFO just landed and posted this here

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.
Sign up to leave a comment.