Разъяснение про увеличение хипа:
В 64 битной JVM существует сжатия указателей, которое контролируется опцией UseCompressedOops и включено по-умолчанию для 64 битных систем начиная с Java SE 6u23
Если размер хипа для вашей программы больше 32GB, то сжатие перестает работать и все указатели становятся размером в 8 байт (в два раза больше).
То есть, увеличивая хип с 32гб на 40гб, вы не увеличиваете фактически хип, а уменьшаете его!
Получается, что имеет смысл увеличивать с 32гб хип сразу на что-то большее 48гб.
Ссылки по теме:
На русском - https://habr.com/ru/articles/440166/
Compressed oops in the Hotspot JVM - https://wiki.openjdk.java.net/display/HotSpot/CompressedOops
How does JVM allocate objects - https://umumble.com/blogs/java/how-does-jvm-allocate-objects%3F/
CompressedOops: Introduction to compressed references in Java - https://www.javacodegeeks.com/2016/05/compressedoops-introduction-compressed-references-java.html
Trick behind JVM's compressed Oops - https://stackoverflow.com/questions/25120546/trick-behind-jvms-compressed-oops
Java HotSpot Virtual Machine Performance Enhancements - https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html
В 64 битной JVM существует сжатия указателей, которое контролируется опцией UseCompressedOops и включено по-умолчанию для 64 битных систем начиная с Java SE 6u23
Если размер хипа для вашей программы больше 32GB, то сжатие перестает работать и все указатели становятся размером в 8 байт (в два раза больше).
То есть, увеличивая хип с 32гб на 40гб, вы не увеличиваете фактически хип, а уменьшаете его!
Получается, что имеет смысл увеличивать с 32гб хип сразу на что-то большее 48гб.
Ссылки по теме:
На русском - https://habr.com/ru/articles/440166/
Compressed oops in the Hotspot JVM - https://wiki.openjdk.java.net/display/HotSpot/CompressedOops
How does JVM allocate objects - https://umumble.com/blogs/java/how-does-jvm-allocate-objects%3F/
CompressedOops: Introduction to compressed references in Java - https://www.javacodegeeks.com/2016/05/compressedoops-introduction-compressed-references-java.html
Trick behind JVM's compressed Oops - https://stackoverflow.com/questions/25120546/trick-behind-jvms-compressed-oops
Java HotSpot Virtual Machine Performance Enhancements - https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html
Хабр
Сжатие указателей в Java
В статье речь пойдет о реализации сжатия указателей в Java Virtual Machine 64-bit , которое контролируется опцией UseCompressedOops и включено по-умолчанию для 64 битных систем начиная с Java SE 6u23....
🔥15👍2👏1
В чем разница между interrupted() и isInterrupted() в классе Thread?
Anonymous Quiz
4%
разницы нет
69%
interrupted() сбрасывает флаг прерывания текущего потока, isInterrupted возвращет этот флаг
26%
interrupted() возвращает флаг прерывания для потока, isInterrupted возвращает и сбрасывает флаг
🔥9❤1
Ответ к вопросу про разницу между interrupted() и isInterrupted() :
Метод interrupt() выставляет флаг прерывания на конкретном потоке, указывая, что ему следует остановиться. Ставит значение флага true.
Статический метод Thread.interrupted() возвращает значение флага прерывания для текущего потока. После проверки всегда присваивает значение флага false и запускает поток.
Метод isInterrupted() возвращает значение флага прерывания для того объекта, на котором вызван. Не запускает поток.
Метод interrupt() выставляет флаг прерывания на конкретном потоке, указывая, что ему следует остановиться. Ставит значение флага true.
Статический метод Thread.interrupted() возвращает значение флага прерывания для текущего потока. После проверки всегда присваивает значение флага false и запускает поток.
Метод isInterrupted() возвращает значение флага прерывания для того объекта, на котором вызван. Не запускает поток.
🔥12👍2
Хороший видос про то, как правильно проходить алгоритмические собеседования - https://youtu.be/gbgiFVFhGkc?si=97bIXOz0Q4M4WKD3
YouTube
#59 | Адилет Жаксыбай - Разбор задач по программированию и алгоритмам для попадания в Google (Гугл)
nFactorial Club - это invite-only сообщество предпринимателей, фаундеров, инвесторов, топ-менеджеров и экспертов. Подать заявку: https://nfactorialschool.typeform.com/to/LybSrqwc
Получите 10% скидку на любой курс от nFactorial School, используя промо-код…
Получите 10% скидку на любой курс от nFactorial School, используя промо-код…
🔥8🤡2❤1👍1
Основная проблема в том , что код по факту не является многопоточным, вызывается метод Feature.get(), который блокируется до тех пор, пока не отработает код внутри callable и не вернется результат, поэтому в цикле блокируется по очереди каждый вызов и следующий запускается после того, как предыдущий уже завершен. Пример того, как можно сделать код многопоточным 👆
🔥11🥱6👍1👨💻1
В каком месте код упадет из-за NPE?
Anonymous Quiz
42%
.mapToDouble(v -> v)
30%
double x = v * v;
4%
System.out.println(x);
24%
не упадет
🔥15🤯5👍2
Ответ к коду про тред пул и строки из файла
(https://t.me/java_interview_tasks/316):
В тред пуле неограниченная по размеру очередь и все таски будут складываться в эту очередь,
Так как потока всего два и разгребать они очередь будут не успевать , если строк в файле довольно много будет, то случиться OutOfMemoryError.
(https://t.me/java_interview_tasks/316):
В тред пуле неограниченная по размеру очередь и все таски будут складываться в эту очередь,
Так как потока всего два и разгребать они очередь будут не успевать , если строк в файле довольно много будет, то случиться OutOfMemoryError.
Telegram
Java Interview Tasks
Есть ли проблемы в этом коде?
👍5🔥3❤2
Java Interview Tasks
В каком месте код упадет из-за NPE?
Здесь не будет никакой ошибки, так как стрим вообще не будет запущен из-за отсутствия терминальной операции.
Вопрос для читателей, упадет ли код с ошибкой (если да, то с какой?) если в этот стрим добавить .count() ?
Вопрос для читателей, упадет ли код с ошибкой (если да, то с какой?) если в этот стрим добавить .count() ?
🔥6👍2
Какой тред пул быстрее отработает?
Anonymous Quiz
17%
Fixed thread pool
34%
Cached thread pool
42%
Virtual thread pool
8%
Другой вариант
🤣11👍5🔥3🤯2🤡2👎1
Результаты на моем ноуте:
# JMH version: 1.33
# VM version: JDK 21.0.1, OpenJDK 64-Bit Server VM, 21.0.1+12-29
# 16 cores
Benchmark Mode Cnt Score Error Units
Test.testCachedExecutorTask200ms avgt 2 214770,671 us/op
Test.testFixedExecutorTask200ms avgt 2 4260257,133 us/op
Test.testVirtualExecutorTask200ms avgt 2 212590,221 us/op
Интерпретация:
Разницы между Cached и Virtual нет. Это было ожидаемо. На такой нагрузке работа с потоками занимает относительно малое время по сравнению с бизнес логикой (200 ms в тестах).
Разница между Fixed может быть объяснена тем что плохо подобрано количество потоков в пуле.
# JMH version: 1.33
# VM version: JDK 21.0.1, OpenJDK 64-Bit Server VM, 21.0.1+12-29
# 16 cores
Benchmark Mode Cnt Score Error Units
Test.testCachedExecutorTask200ms avgt 2 214770,671 us/op
Test.testFixedExecutorTask200ms avgt 2 4260257,133 us/op
Test.testVirtualExecutorTask200ms avgt 2 212590,221 us/op
Интерпретация:
Разницы между Cached и Virtual нет. Это было ожидаемо. На такой нагрузке работа с потоками занимает относительно малое время по сравнению с бизнес логикой (200 ms в тестах).
Разница между Fixed может быть объяснена тем что плохо подобрано количество потоков в пуле.
⚡4🔥3❤2👍1
Что такое java lts релиз?
Anonymous Quiz
59%
знаю
25%
не знаю
8%
не уверен что знаю:)
8%
узнать резхультаты
👍9