|
Stream и память
|
|||
---|---|---|---|
#18+
adminDontSleep колекция UUID -по ней получаем из кэша- стрим объектов - мапим в стрим других объектов( например в лонги) фильтруем и считаем количество элементов вот на каждом этом этапе интересует поведение памяти Дьявол в деталях. Я - не специалист в Хазел. Я даже его не использовал. Но я использовал Apache Ignite. Это такой себе брат-близнец по функционалу. И вот учет памяти в Ignite осложняется тем что объекты не лежат в heap. Они лежат в оперативке но не в JavaHeap. Это одна деталь. Надо узнать как Хазел хранит ключи и значения. Возможно он тоже как-то оптимизирует техники хранения. Это нужно поскольку во всех in-memory кешах делают защиту от лишней активности GC кидая их нативную память. И еще одна деталь. Начиная с Java 14 появился новй API (кажется foreign memory) который чего-то там улучшает для offheap. Проверь какая Java. На что влияет? Ну как всегда на удобства использования. И надо проверить как это использует Hazel. Что еще посмотреть? Посмотри JMX-компоненты которые мониторят память в Hazel. Желательно их дампить в текстовый файл каждые 3-5 секунд и отображать в Graphana. Это важно во время твоего тестирования ключей. Тоесть такой юзкейс который ты придумал как учёт количества ключей - вытекает в такой сложный investigation. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:27 |
|
Stream и память
|
|||
---|---|---|---|
#18+
adminDontSleep я думаю они будут целиком загружены в хип Если загружены то память не изменится. Если не загружены то памятью заведует ПО а не сборщик мусора. И т.д. и т.п. Без проверки твои догадки ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:35 |
|
Stream и память
|
|||
---|---|---|---|
#18+
У хазел настройка по умолчснию хранить в памяти 1000 обьектов. Остыльные в хранилище. Тут мы тыкаем палочкой в слона и даже не видим ответ. Так как ТС не у компа и не у кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:38 |
|
Stream и память
|
|||
---|---|---|---|
#18+
adminDontSleep в целом ты прав,но забываешь о том ,что объекты изнчально находятся в кеще(в данном случае это хезель каст) и чтобы стрим начал с ними работать я думаю они будут целиком загружены в хип Если ваш Hazelcast работает в процессе вашей JVM, то рантайм, скорее всего, предоставит вам ссылки на объекты из кэша Hazelcast без дополнительных усилий с вашей стороны. Ну или читатйте доки этого самого Hazelcast-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:41 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton Начиная с Java 14 появился новй API (кажется foreign memory) который чего-то там улучшает для offheap. В Java14 появился JEP 352: Non-Volatile Mapped Byte Buffers для NIO и с ограничениями на поддерживаемые системы. А JEP 393: Foreign-Memory Access API (Third Incubator) продолжал оставаться инкубаторе на Java16. И в Java17 он тоже остаётся в инкубаторе как часть JEP 412: Foreign Function & Memory API (Incubator) . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:49 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Basil A. Sidorov adminDontSleep в целом ты прав,но забываешь о том ,что объекты изнчально находятся в кеще(в данном случае это хезель каст) и чтобы стрим начал с ними работать я думаю они будут целиком загружены в хип Если ваш Hazelcast работает в процессе вашей JVM, то рантайм, скорее всего, предоставит вам ссылки на объекты из кэша Hazelcast без дополнительных усилий с вашей стороны. Ну или читатйте доки этого самого Hazelcast-а. хезель каст в данном случае работает как отдельный процесс в докер контейнере ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:58 |
|
Stream и память
|
|||
---|---|---|---|
#18+
adminDontSleep Basil A. Sidorov пропущено... "Смешались в кучу кони, люди ..." Если ваш Hazelcast работает в процессе вашей JVM, то рантайм, скорее всего, предоставит вам ссылки на объекты из кэша Hazelcast без дополнительных усилий с вашей стороны. Ну или читатйте доки этого самого Hazelcast-а. хезель каст в данном случае работает как отдельный процесс в докер контейнере ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 12:04 |
|
Stream и память
|
|||
---|---|---|---|
#18+
adminDontSleep хезель каст в данном случае работает как отдельный процесс в докер контейнере 1. Процессы изолированы и бессмысленно рассуждать откуда именно ваш процесс берёт объекты: они у него точно есть (вместе со всеми их данным) и они (все) - в куче. 2. "Оптимизация" использования памяти вашим процессом - оно точно надо??? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 13:10 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Он боится что выскочит райзе - Память кончилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 13:14 |
|
Stream и память
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, не надо домысливать за человека. Я, например, домысливаю, что он занимает преждевременной оптимизацией, но, всё-таки, не пытаюсь озвучивать свои домыслы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 14:57 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Я думаю тема топика - оптимизация памяти. Но мне кажется что она не про Java а про Хазелкаст. Надо читать его мануалы и учебники. Если выборка всех ключей из Hazelcast - это антипаттерн, тогда про это должно быть упоминание. Убежден что эта тема проскакивала в Quora, Stackover e.t.c. По поводу стримов. Я очень сильно рекомендую автору переписать этот блок на обычный цикл for. Код: java 1. 2. 3. 4. 5.
Это займет 5 минут. Всяко быстрее чем еще много страниц обсуждать несуществующие технические долги. И тогда все вопросы по Java стримам отпадут и останутся только чистые вопросы эксплуатации Хазелкаст. Будем рубить ненужные хвосты. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 15:11 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Basil A. Sidorov PetroNotC Sharp, не надо домысливать за человека. Я, например, домысливаю, что он занимает преждевременной оптимизацией, но, всё-таки, не пытаюсь озвучивать свои домыслы. Преждевременная оптимизация для чего? Ответ - для того чтобы не было райзе по памяти. Или вы не память оптимизируете? Очевидность а не домыслы))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 15:34 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton, Ничего он не поправит, не залогирует и не проверит. Он выше сказал. А значит топик тихо умрет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 15:36 |
|
Stream и память
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, придержи коней Если используется правильный LRU то чтение кеша вызовет только рециркуляцию сущностей но не вызовет обязательно OutOfMemory. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 15:50 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp, придержи коней Если используется правильный LRU то чтение кеша вызовет только рециркуляцию сущностей но не вызовет обязательно OutOfMemory. Попробуй сам скажи для чего автор ОПТИМИЗИРУЕТ. Цель то какая? Слава богу в термине Оптимизация у нас консенсус ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:00 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Может ему задачу такую поставили. Разобраться. Вот он сидит и разбирается. Не всегда люди приходят в sql.ru с конкретными вопросами. Иногда с сомнениями. Вот почитай посты Андрейки. О чем там? Я не понимаю. Просто эмоциональный блог. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:10 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Вот выборка ключей по предикату https://docs.hazelcast.com/hazelcast/5.0/query/querying-maps-predicates Наподобие SELECT .. WHERE в базах данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:20 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton Может ему задачу такую поставили. Разобраться. Вот он сидит и разбирается. Не всегда люди приходят в sql.ru с конкретными вопросами. Иногда с сомнениями. Вот почитай посты Андрейки. О чем там? Я не понимаю. Просто эмоциональный блог. все верно есть задача - а я выбираю как лучше сделать,объекты находятся в кеше( хезель каст) - нужно взять все имеющиеся там объекты взять у них атрибут по нему отфильтровать и посчить сумму объектов чтобы это сделать можно пойти несколькими путями 1.достать из кеша все эти объекты и сделать то о чем я писал в начале топика- но меня смушает тот факт что я буду тянуть в хип по сути не нужные мне объекты чтобы их просто посчитать 2.можно сделать это средствами хезель каста - тоже не выглядит как суперпроизводительное решение да все верно это преждевременная оптимизация- но и собственно интерес к тому,как это будет выглять в памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:33 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Вот чудак. Делай средствами Хазелькаста. Или ты думаешь что ты умнее и хитрее его создателей? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:44 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton Может ему задачу такую поставили. Разобраться. Вот он сидит и разбирается. Не всегда люди приходят в sql.ru с конкретными вопросами. Иногда с сомнениями. Вот почитай посты Андрейки. О чем там? Я не понимаю. Просто эмоциональный блог. Ему решать) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:53 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton Вот чудак. Делай средствами Хазелькаста. Или ты думаешь что ты умнее и хитрее его создателей? хорошо вот средствами хезелькаста Код: java 1. 2. 3. 4. 5.
я правильно понимаю что вот эта строчка Код: java 1.
все таки вытащит в хип джава процесса эту коллекцию - пусть и уже отфильтрованную ,либо же в хип попадет только size() ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 17:01 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Как бы простыми словами... Вот у тебя в базе лежит 10 000 результатов опросов (survey) к примеру. Из них по ключу ты выберешь допустим 5%. Почему 5? Я не знаю. Я просто так решил. Можешь взять 20% неважно. Но я думаю что Хазел умеет срезать углы на поворотах и для подсчета штук сделат ровно тот объем вычислений что надо. Но не будет процессить 100% сущностей. Вот я так рассуждаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 17:11 |
|
Stream и память
|
|||
---|---|---|---|
#18+
mayton Как бы простыми словами... Вот у тебя в базе лежит 10 000 результатов опросов (survey) к примеру. Из них по ключу ты выберешь допустим 5%. Почему 5? Я не знаю. Я просто так решил. Можешь взять 20% неважно. Но я думаю что Хазел умеет срезать углы на поворотах и для подсчета штук сделат ровно тот объем вычислений что надо. Но не будет процессить 100% сущностей. Вот я так рассуждаю. ну я с тобой тут согласен - но мы все таки явно не выяснили как под капотом ведет себя стрим- может ( конечно нет,но всеже) тут ворпос тоже ребром - кеш так же будет процессиить эту мапу,и так же тратить ресурсы свои на это и тут вопрос где будет оптимальней так же мы в случае с хезель часть работы возложим на кеш часть вытащим в джава процесс - тоесть не все так однозначно как ты говоришь ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 17:17 |
|
Stream и память
|
|||
---|---|---|---|
#18+
Померяй время отклика в двух случаях. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 17:35 |
|
|
start [/forum/topic.php?fid=59&msg=40126379&tid=2120265]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
46ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
443ms |
get tp. blocked users: |
0ms |
others: | 274ms |
total: | 793ms |
0 / 0 |