Size: a a a

2019 August 22

RI

Ruslan Ibragimov in Kotlin JVM
Alexander Nozik
От настроек ВМ и самой ВМ сильно зависит. Возьмите openj9 или как ее и шенанду, использование памяти уполовинится
Скорее нужно брать serial для такого хипа Шенанда не нужна, а openj9 это же вообще дистр Jdk
источник

VP

Vladimir Petrakovich in Kotlin JVM
Из интереса решил померить у себя (запустил и покидал несколько запросов):
- jar: 60 мб
- Xmx: 48m (с меньшим падало при запуске)
- Память: ~140 мб
Это на JDK 8.
источник

AN

Alexander Nozik in Kotlin JVM
Ruslan Ibragimov
Скорее нужно брать serial для такого хипа Шенанда не нужна, а openj9 это же вообще дистр Jdk
Я в нескольких местах читал, что на openj9 потребление памяти существенно меньше. Шенанда отдает память шустро, но вот это я не тестировал
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexander Nozik
Я в нескольких местах читал, что на openj9 потребление памяти существенно меньше. Шенанда отдает память шустро, но вот это я не тестировал
Ну там наверное дело совсем не в GC, он сам-то ест не так уж много
источник

ЕС

Евгений Соколов in Kotlin JVM
Vladimir Petrakovich
Из интереса решил померить у себя (запустил и покидал несколько запросов):
- jar: 60 мб
- Xmx: 48m (с меньшим падало при запуске)
- Память: ~140 мб
Это на JDK 8.
Я про это и говорил, сам jvm с его там нативной памятью. С хипом то понятно.
источник

RI

Ruslan Ibragimov in Kotlin JVM
Alexander Nozik
Я в нескольких местах читал, что на openj9 потребление памяти существенно меньше. Шенанда отдает память шустро, но вот это я не тестировал
Я просто не понял почему jdk и gc в одном ряду стоят. И сегодня uncommit умеет делать не только шенонда, но и g1 и старые коллекторы вроде тоже. Для сервера это как-бы не очень важно
источник

VP

Vladimir Petrakovich in Kotlin JVM
Евгений Соколов
Я про это и говорил, сам jvm с его там нативной памятью. С хипом то понятно.
Ну да, вас поняли. Проблема в том, что оценить, сколько съест JVM, практически невозможно без тестов конкретного приложения.
источник

AO

Alexey Otts in Kotlin JVM
Ruslan Ibragimov
Я просто не понял почему jdk и gc в одном ряду стоят. И сегодня uncommit умеет делать не только шенонда, но и g1 и старые коллекторы вроде тоже. Для сервера это как-бы не очень важно
g1 же только при ручной очистке отдаёт?
источник

ЕС

Евгений Соколов in Kotlin JVM
Vladimir Petrakovich
Из интереса решил померить у себя (запустил и покидал несколько запросов):
- jar: 60 мб
- Xmx: 48m (с меньшим падало при запуске)
- Память: ~140 мб
Это на JDK 8.
140мб это ~10 микросервисов на го 😁
источник

RI

Ruslan Ibragimov in Kotlin JVM
Alexey Otts
g1 же только при ручной очистке отдаёт?
что такое ручная очистка?
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Otts
g1 же только при ручной очистке отдаёт?
Не, просто не так быстро
источник

AO

Alexey Otts in Kotlin JVM
Ruslan Ibragimov
что такое ручная очистка?
Ну типо надо дёрнуть GC.full или что там, иначе она ничего не отдаст
источник

VN

Vladislav Navrocky in Kotlin JVM
Евгений Соколов
Поставил хип в 8 мб (ктор умещается), но процесс все равно ~70 (что где-то 62 jvm)
В общем ладно, если никак не предсказать, возьму +256мб (жирненький микросервис выходит что-то)
У меня где-то утечка по памяти. Использую ktor и graphql java. И все это запускается в докере. В общем при старте ест около 100 мб оперативы, потом дожирает все оставшуюся доступную память и ложит сервер 100% нагрузкой на каждое ядро. OpenJDK 8. Хочу попрофилировать, но никак не подберу профайлер. Пробовали visualvm и jprofiler, у обоих проблема с подключением внутрь контейнера. Что посоветуете?
источник

VP

Vladimir Petrakovich in Kotlin JVM
Евгений Соколов
140мб это ~10 микросервисов на го 😁
10 микросервисов на джаве, запущенные рядом, кушать будут меньше.
А уж если в одной JVM...
Но да, это не тот критерий, по которому джава выигрывает.
источник

RI

Ruslan Ibragimov in Kotlin JVM
Alexey Otts
Ну типо надо дёрнуть GC.full или что там, иначе она ничего не отдаст
Нет конечно, system.gc вообще ничего не делает сверх того что сам коллектор сделает
источник

AO

Alexey Otts in Kotlin JVM
Евгений Соколов
140мб это ~10 микросервисов на го 😁
И они делают примерно ничего с данными судя по всему
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Otts
И они делают примерно ничего с данными судя по всему
Ну не, они перекладывают их из одного сокета в другой
источник

AO

Alexey Otts in Kotlin JVM
Vladimir Petrakovich
Ну не, они перекладывают их из одного сокета в другой
найс
источник

AO

Alexey Otts in Kotlin JVM
такое можно и в jvm сделать за копейки
источник

RI

Ruslan Ibragimov in Kotlin JVM
Евгений Соколов
140мб это ~10 микросервисов на го 😁
Вообще нужно начать с того, что микросервис это не про потребление памяти или cpu, а про разделение ответсвенности. Если так важно съэкономить 30мб оверхеда от JVM (что смешно звучит), то да, стоит выбрать другой инструмент
источник