|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Здравствуйте, столкнулся с проблемой: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded При заполнении HashMap, большим значением элементов. Есть ли возможность свопа на диск, или другого способа экономичной работы с большим количеством данных ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 10:24 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 11:20 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Есть достаточно быстрые коробочные продукты с интерфейсом похожим на Map<> которые создавались в Google и Facebook. И изначально проектировались для очень большого хранилища. Щас доступны к юзанию. Смотрите. https://github.com/facebook/rocksdb/tree/master/java/src/main/java/org/rocksdb https://github.com/google/leveldb Будьте внимательны. Раньше их реализация была написаны на С++ и на Java был вынесен интерфейс. Как щас я не знаю. Возможно что-то было полносью портировано. Не следил за новостями. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 11:40 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
razliv, начать бы конечно с того, что выделить чуть больше памяти? -xmx, -xms ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 11:56 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Спасибо большое за ответы ! Озверин, Тут уже увеличением памяти не поможешь :( Спасибо буду пробовать гибриды collections и db :) именно то что и хотелось ! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 14:02 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Оптимизированы-ли они по записи? Если чел туда будет заливать терабайты информации - это будет тоже немаловажно. Ждать ему минуту. Час. Или сутки. Хорошая тема для бенчмарка. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 14:14 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Майтон А что есть "оптимизированны по записи" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 15:53 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Для дисковых операций random-access губителен. Поэтому те структуры данных которые планируется хранить на диске и модифицировать часто и много - дополняют логом транзакций. Это было очень актуально в этоху магнитных дисков. Для SSD - не знаю. Недо тестировать. Но сам по себе факт наличия подобной структуры говорит просто о зрелости проекта. Незрелые проекты обычно надеются что random-access "прокатит". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 16:10 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
maytonДля дисковых операций random-access губителен. Поэтому те структуры данных которые планируется хранить на диске и модифицировать часто и много - дополняют логом транзакций.Все уснуть не могу - пытаюсь понять как связано первое предложение со вторым: В жаве условно есть три варианта что-то читать и писать (в порядке уменьшения тормознутости): старые добрые I/OStreams, RandomAccessFile и MappedByteBuffer лог транзакций (он же журнал) нужен чтобы поддержать atomicity и durability - и тут вообще пофиг как доступ к файлу организован а кого random-access-то губит, как и зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 20:34 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, давайте рассуждать. Автору нужен HashMap. На диске. HashMap в основе своей природы несет функционал произвольного доступа к бакету. Поскольку речь идет о том что часть данных будет лежать на диске - мы должны придумать как обеспечить максимальную пропускную способность диска. Java предлагает два базовых функционала. RandomAccessFile и FileOutputStream. Оба из них уже оптимизированы через NIO по максимуму поэтому мы будем счиать что NIO нам не нужен. Первый пригоден для чтений записей рандомно. В любое место диска. Второй - только последовательно. Первый создает жёсткую нагрузку на кеши и на механику диска. Второй - более мягкий. Суммарная пропускная способность random-access file будет зависеть от порядка чтения. А порядок у нас - произвольный (вспоминаем hashCode()). По чтению и по записи будет примерно одинаково плохо. И чем крупнее будет база - тем сильнее тормоза. Но чтобы мы почувствовали этот эффект - надо хотя-бы 2-4 раза превысить доступный объем памяти чтобы убрать эффекты кешей ОС которые нам любезно подсовывает операционка. Поэтому я говорил о терабайтах. На мегабайтах разницы особой не будет. Суммарная пропускная способность FileOutputStream (последовательный доступ) будет максимально быстрой для вашего диска. К паспортной скорости HDD не приблизится но в силу архитектуры будет достаточно быстрой что программисту там уже нечего оптимизировать. Скорость - as is. Можно провести эксперимент - читать терабайтный файл последовательно. А потом тот-же файл блоками (по 1,2,4,16 Mb) как хотите произвольно и замерять как просядет скорость. На этом свойстве основанны журналирующие оптимизации практически всех DBMS. DBMS фактически "откладывает на потом" запись в сегмент данных. Сначала она журналирует (FileOutputStream) а потом уже в фоне дописывает в данные когда есть возможность. Но главное - не блокировать ожидание записи. Та дисковая DBMS которая не использует эту возможность - либо плоха. Либо предназначена только для работы in-memory. Про MappedByteBuffer я сейчас не готов говорить. Это - сложная тема и она перекликается с реализацией этой техники в ОС. Я кстати поднимал новогодний топик на эту тему. Где то есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 20:50 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
maytonJava предлагает два базовых функционала. RandomAccessFile и FileOutputStream. Оба из них уже оптимизированы через NIO по максимуму поэтому мы будем счиать что NIO нам не нужен. Первый пригоден для чтений записей рандомно. В любое место диска. Второй - только последовательно . Первый создает жёсткую нагрузку на кеши и на механику диска. Второй - более мягкий.Это как вообще? Вот смотрим сигнатуру: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Наличие offset в параметрах метода какбы намекает, что через FileOutputStream мы можем писать в "любой" (его зачем-то int объявили, а в RandomAccessFile seek принимает long, но не суть потому что есть getChannel().position()) участок файла - это и есть же произвольный доступ, разве нет? С точки зрения операционной системы между FileOutputStream и RandomAccessFile только в том, что RandomAccessFile можно открыть с O_SYNC или O_DSYNC , а так оба этих жавских API утилизируют одни и те же системные вызовы open/seek/write/close - разница по большому счету только в API со стороны жавы. maytonМожно провести эксперимент - читать терабайтный файл последовательно. А потом тот-же файл блоками (по 1,2,4,16 Mb) как хотите произвольно и замерять как просядет скорость. Вы-таки определитесь, пишите вы или читаете. maytonНа этом свойстве основанны журналирующие оптимизации практически всех DBMS. DBMS фактически "откладывает на потом" запись в сегмент данных. Сначала она журналирует (FileOutputStream) а потом уже в фоне дописывает в данные когда есть возможность. Но главное - не блокировать ожидание записи.Журнал в БД обеспечивает atomicity и durability, к производительности это никакого отношения не имеет, откуда по-вашему возьмется производительность, если с журналом нужно уже в два места писать, а запись в журнал "последовательная" (да еще и с O_SYNC) не потому что так быстрее, а потому что чтобы данные не потерять. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 04:59 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
razlivПри заполнении HashMap, большим значением элементов. Есть ли возможность свопа на диск, или другого способа экономичной работы с большиминтересно а перенос HashMap в субд не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 06:43 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов..... Но главное - не блокировать ожидание записи.Журнал в БД обеспечивает atomicity и durability, к производительности это никакого отношения не имеет, откуда по-вашему возьмется производительность, если с журналом нужно уже в два места писать, а запись в журнал "последовательная" (да еще и с O_SYNC) не потому что так быстрее, а потому что чтобы данные не потерять.[/quot] Надо это производителям почти всех СУБД рассказать, а то они не знают =) Топик - бери любую удобную key-value dbms ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 09:39 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Наличие offset в параметрах метода какбы намекает, что через FileOutputStream мы можем писать в "любой" (его зачем-то int объявили, а в RandomAccessFile seek принимает long, но не суть потому что есть getChannel().position()) участок файла - это и есть же произвольный доступ, разве нет? С точки зрения операционной системы между FileOutputStream и RandomAccessFile только в том, что RandomAccessFile можно открыть с O_SYNC или O_DSYNC , а так оба этих жавских API утилизируют одни и те же системные вызовы open/seek/write/close - разница по большому счету только в API со стороны жавы. Здесь offset - применительно не к файлу а к источнику. К массиву байтов. По поводу API операционной системы - вы правы. Почти все файловые API в конечно счете будут сводится к open/fseek/read/write/close для Unix и к другим CreateFile.. (там более длинное название в Windows). И на уровне железа будут отображаться в атомарные операции записи сектора на диск для HDD или для какой-то примитивной операции передачи данных блочно для SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 10:52 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловmaytonМожно провести эксперимент - читать терабайтный файл последовательно. А потом тот-же файл блоками (по 1,2,4,16 Mb) как хотите произвольно и замерять как просядет скорость. Вы-таки определитесь, пишите вы или читаете. В самом начале топика я выразил сомнение по поводу скорости инициализации подобной дисковой мапы. Инициализация предполагает запись. Про эксперимент - пока отложим. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 10:54 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловЖурнал в БД обеспечивает atomicity и durability, к производительности это никакого отношения не имеет, откуда по-вашему возьмется производительность, если с журналом нужно уже в два места писать, а запись в журнал "последовательная" (да еще и с O_SYNC) не потому что так быстрее, а потому что чтобы данные не потерять. Я говорил о физическом уровне. Об оптимзиации дисковых операций в DBMS. Вы (очень резко) прыгнули в ACID (atomicity, durability) про которые мы еще не говорили. Да и автор пока не выставлял требований. Хотя журнал (redo-log, write-ahead-log) может быть использован для обеспечения durability. Да. Я сейчас не помню как там в этих key-value хранилищах. Но обычно владелец волен выбирать режим в котором он будет работать. Транзакционный или не транзакционный. А для многих операций уровня ETL, bulk-load и прочих (массовых) манипуляций с данными обычно разработчик или DBA сознательно выбирает не-транзакционный режим. Например стартует биржевая система. Она должна в несколько минут прогрузить данные из обычной БД в свой более быстрый key-value. Я-бы здесь сознательно выбирал отключение транзакций ибо нету еще никаких пользователей (система в процессе загрузки) и сама по себе операция достаточно проста по реакции на ошибку. Если что-то пошло не так - просто загрузим еще разик. Нам важнее быстро стартовать операционный день. А после старта уже пул коннекшенов подключится в режиме транзакций как и положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:05 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, наличие оффсета как бе намекает, откуда из массива переданных байт начинать писать, а не "куда". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:08 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
maytonЗдесь offset - применительно не к файлу а к источнику. К массиву байтов.Тогда понятно чего там int, тем не менее fos.getChannel().position() будет делать seek(). maytonПо поводу API операционной системы - вы правы. Почти все файловые API в конечно счете будут сводится к open/fseek/read/write/close для Unix и к другим CreateFile.. (там более длинное название в Windows). И на уровне железа будут отображаться в атомарные операции записи сектора на диск для HDD или для какой-то примитивной операции передачи данных блочно для SSD.Там еще есть DMA, оно же zero-copy и пр. MappedByteBuffer в жаве именно его реализует. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:22 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, что там реализовано в java - вообще никого не волнует, если SSD физически при записи работает с блоками по 1mb(или по сколько там?). И каждая рандомная запись блока размером меньшим 1 mb будет сопровождаться определенным кол-вом IOPs: -прочесть весь блок из 1 метра -заменить в нем на наш маленький блок -записать обратно Отсюда проистекает так называемая оптимизация под железо, когда пишут сразу "нужным" размером блока", а не маленькими или большими, про то (частично) майтон и говорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:30 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловТам еще есть DMA, оно же zero-copy и пр. MappedByteBuffer в жаве именно его реализует. Аккурат в новый год у меня была попытка выпрыгнуть из Java условностей и прыгнуть в недра ОС (в основном меня интересовали Windows-10 и Linux последних версий ядра) чтобы понять что там и как. К сожалению сообщество отреагировало вяло. Толи салат Оливье был плох толи Шампанськое... Вот он кстати https://www.sql.ru/forum/1307294/tyapnichnyy-novogodniy-mmap ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:44 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Года три назад, у LevelDB драйвера для жава были какие-то ну очень кривые. Да и по тестам, отзывам, нишевой продукт с массой специфики Когда для себя выбирал, остановился на банальном SQL Lite, лично мне скорости вполне хватило. По тестам в И-нет (сам не тестил) особого профита у LevelDb не видно, а проблемы на форуме часто описывают. Ну нафиг такие эксперементы ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:53 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Озверин-прочесть весь блок из 1 метра -заменить в нем на наш маленький блок -записать обратноа не делает ли это всё update из любой субд? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:53 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
вадяrazlivПри заполнении HashMap, большим значением элементов. Есть ли возможность свопа на диск, или другого способа экономичной работы с большиминтересно а перенос HashMap в субд не поможет? Надо спросить у автора. Мысль здравая. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:56 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
ОзверинОтсюда проистекает так называемая оптимизация под железо, когда пишут сразу "нужным" размером блока", а не маленькими или большими, про то (частично) майтон и говорит.Оно возникает только если запись идет мимо кеша ФС, т.е. файлы нужно открывать с O_DIRECT и дальше приседать, что, к примеру, в Linux не рекомендуется делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 12:08 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Я-бы очень не хотел обсуждать тему кеша ОС. Она очень путает карты. Особенно когда хранилище превысило память на 10-100% а мы ради этого уже втащили в постановку key-value БД. У нас нет чистой алгоритмизации а есть эвристика на тему что попадет в кеш и что вобще автор будет делать с базой в части статистики. Я беру самый самый worst case. Когда размер БД в несколько раз уже превысил доступную память и соотв все кеши бесполезны. Рассматривать этот диапазон 10-100% я не хочу. Мне это просто неинтересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 12:40 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Вобщем если речь идет о 10-100% оверхеда по памяти - то лучше просто купить память на сервак и растянуть Xmx по максимуму насколько это возможно. Если OutOfMemory будет регулярным и есть тенденция что база вырастет очень резко - тогда надо действительно key-value хранилище. Решать автору вобщем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 12:53 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Да вроде варианты очевидны: 1. ОЗУ на сервере не хватает и нет супер жестких требований по производительности - РСУБД 2. ОЗУ на сервере не хватает, но производителность РСУБД не устраивает - подбираем базу под свои экзотические потребности, смотрим всякие Key-value, NoSQL и маскирующиеся под РСУБД, но модные внутри (а-ля тарантул) 3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache 4. Ограничений по ОЗУ нет, но нужен персистенс и супер производительность - берем IMDG решение ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 14:18 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
just_vladimir.... 3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache .... При этом аккуратно смотрем, кто из студентов делал эту мега-либу. Если есть фотка и девочка-студент грудастая - можно за ней либу потестить. Если фотки нет, то оно Вам надо, за студентами их студенческие поделки тестить? Не видел ни одной нормальной либы для off-heap. Нормальные (более-менее) есть, но они все для специфических задачь. Если value для Map'а могут быть разного размера, то удаление данных из off-heap, уже не тревиальная задача (фрагментация). Насколько стоит замусоривать память операционной системы и что этим при активной работе в режиме 24x7 можно достигнуть, лично мне не очень понятно. Но я бы на реальных PROD серверах эксперементировал бы с опаской. IMHO & AFAIK Если такое тащить в проект, то только понимая, что притащенный copy-past'ом из I-net'а код самому же придется и поддерживать. А тогда, проще уж свою либу написать (методом Copy-Past'а) заточенную под свои данные и паттерн нагрузки. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:08 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Еще ... глубоко не вникая в детали. Я-бы установил Eclipse Memory Analyzer. И посмотрел-бы что вообще лежит в этой хеш-мапе. Если там к примеру есть дубликаты строк - то можно поиграть в справочники. Или заменить толстые типы данных (Date) на атомарные (long) если бизнес-логика позволяет. Булевы - слить пакетом в одно целое (по аналогии с С++ bitfields). Вобщем до того как покупать память и ставить СУБД просто проанализировать top 10 memory consumers. Вангую что там будет char[] но что внутри надо поисследовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:50 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
maytonВангую что там будет char[]. Шерлок, но как? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:51 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
ОзверинmaytonВангую что там будет char[]. Шерлок, но как? А он везде... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:56 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
maytonА он везде... +++ :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:15 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevjust_vladimir.... 3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache .... При этом аккуратно смотрем, кто из студентов делал эту мега-либу. Если есть фотка и девочка-студент грудастая - можно за ней либу потестить. Если фотки нет, то оно Вам надо, за студентами их студенческие поделки тестить? Не видел ни одной нормальной либы для off-heap. Нормальные (более-менее) есть, но они все для специфических задачь. Если value для Map'а могут быть разного размера, то удаление данных из off-heap, уже не тревиальная задача (фрагментация). Насколько стоит замусоривать память операционной системы и что этим при активной работе в режиме 24x7 можно достигнуть, лично мне не очень понятно. Но я бы на реальных PROD серверах эксперементировал бы с опаской. IMHO & AFAIK Если такое тащить в проект, то только понимая, что притащенный copy-past'ом из I-net'а код самому же придется и поддерживать. А тогда, проще уж свою либу написать (методом Copy-Past'а) заточенную под свои данные и паттерн нагрузки. Ну вот, например, вроде Паньгин не тянет на грудастую девочку студентку, но думаю, что если прижмет и задача будет требовать off heap кэша, то его либой можно уж и воспользоваться https://github.com/odnoklassniki/one-nio, но да, понятно, что на свой страх и риск, но если надо, то что уж делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:31 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev...Нормальные (более-менее) есть, но они все для специфических задачь.... https://github.com/odnoklassniki/one-nio, Дело же не в либе, а что бы ей еще и правильно пользоваться и по назначению. Например глянул на класс allocator. Если, не дай бог, выделять маленькими блоками, то смысла никакого. Т.к. при allocate создается еще и служебные объекты в Heap'е. Т.ч. данные запихиваемые в OffHeap нужно как-то объединять в достаточно большие блоки. Что, для произвольных данных, уже не очень тревиально. LongLongHashMap все хранит в OffHeap: 1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!). 2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется) LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу. Это с ходу. Могу ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:53 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevLeonid Kudryavtsev...Нормальные (более-менее) есть, но они все для специфических задачь.... https://github.com/odnoklassniki/one-nio, Дело же не в либе, а что бы ей еще и правильно пользоваться и по назначению. Например глянул на класс allocator. Если, не дай бог, выделять маленькими блоками, то смысла никакого. Т.к. при allocate создается еще и служебные объекты в Heap'е. Т.ч. данные запихиваемые в OffHeap нужно как-то объединять в достаточно большие блоки. Что, для произвольных данных, уже не очень тревиально. LongLongHashMap все хранит в OffHeap: 1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!). 2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется) LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу. Это с ходу. Могу ошибаться. На всякий случай уточню, что мы ведь оба понимаем, что если вдруг дело дошло до того, что мы стали задумываться об off heap кэшах, то у нас уже проект не совсем уж на коленке деланный и в команде не 1.5 студента, так ведь? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 17:01 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 17:05 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevLeonid Kudryavtsev...Нормальные (более-менее) есть, но они все для специфических задачь.... LongLongHashMap все хранит в OffHeap: 1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!). 2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется) LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу. А какую задачу решает LongLongHashMap? Там по API - непонятно. Нет внятного description. Если индексы больше 2 Гига то это точно оно. Ибо декларировано. А насчет другого... ну лучшее враг хорошего. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 17:44 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Еще пару названий вспомнил. https://hazelcast.com/ - возможно есть коммерческая ветка. Где возможностей больше. Надо проверять. https://github.com/dain/leveldb - порт сишного LevelDB на Java. Лично я не юзал. Я какраз брал его С++ ную часть в составе Infinispan. Внизу документации пишут что юзается в ActiveMQ https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - Беркли. Это старый проверенный конь который работает в Линуксах уже давно. Кажется в DNS используется. Опенсорцные разработки Оракла замерли на какой-то версии. Кажется новых нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 18:30 |
|
Out of memory errror - есть ли возможность Свопа ?
|
|||
---|---|---|---|
#18+
Спасибо большое, никогда раньше не работал с такими вещами - раньше стандартных Явовских коллекций вполне хватало. Но теперь открыл для себя новую область :) MapDB хватило для моих нужд, фурычит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 09:32 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121509]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 181ms |
0 / 0 |