powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Out of memory errror - есть ли возможность Свопа ?
39 сообщений из 39, показаны все 2 страниц
Out of memory errror - есть ли возможность Свопа ?
    #39766882
razliv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, столкнулся с проблемой:


Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded


При заполнении HashMap, большим значением элементов.
Есть ли возможность свопа на диск, или другого способа экономичной работы с большим
количеством данных ?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39766918
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39766931
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть достаточно быстрые коробочные продукты с интерфейсом похожим на Map<> которые создавались в Google и Facebook.
И изначально проектировались для очень большого хранилища. Щас доступны к юзанию.

Смотрите.

https://github.com/facebook/rocksdb/tree/master/java/src/main/java/org/rocksdb
https://github.com/google/leveldb

Будьте внимательны. Раньше их реализация была написаны на С++ и на Java был вынесен интерфейс.
Как щас я не знаю. Возможно что-то было полносью портировано. Не следил за новостями.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39766941
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
razliv, начать бы конечно с того, что выделить чуть больше памяти? -xmx, -xms
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767020
razliv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за ответы !

Озверин,

Тут уже увеличением памяти не поможешь :(

Спасибо буду пробовать гибриды collections и db :) именно то что и хотелось !
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767028
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимизированы-ли они по записи? Если чел туда будет заливать терабайты информации - это будет
тоже немаловажно. Ждать ему минуту. Час. Или сутки. Хорошая тема для бенчмарка.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767153
razliv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Майтон

А что есть "оптимизированны по записи" ?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для дисковых операций random-access губителен. Поэтому те структуры данных
которые планируется хранить на диске и модифицировать часто и много - дополняют
логом транзакций. Это было очень актуально в этоху магнитных дисков. Для SSD - не знаю.
Недо тестировать. Но сам по себе факт наличия подобной структуры говорит просто о зрелости
проекта. Незрелые проекты обычно надеются что random-access "прокатит".
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767305
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля дисковых операций random-access губителен. Поэтому те структуры данных
которые планируется хранить на диске и модифицировать часто и много - дополняют
логом транзакций.Все уснуть не могу - пытаюсь понять как связано первое предложение со вторым:
В жаве условно есть три варианта что-то читать и писать (в порядке уменьшения тормознутости): старые добрые I/OStreams, RandomAccessFile и MappedByteBuffer

лог транзакций (он же журнал) нужен чтобы поддержать atomicity и durability - и тут вообще пофиг как доступ к файлу организован

а кого random-access-то губит, как и зачем?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

давайте рассуждать. Автору нужен 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 я сейчас не готов говорить. Это - сложная тема и она перекликается с реализацией
этой техники в ОС. Я кстати поднимал новогодний топик на эту тему. Где то есть.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767358
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonJava предлагает два базовых функционала. RandomAccessFile и FileOutputStream. Оба из них
уже оптимизированы через NIO по максимуму поэтому мы будем счиать что NIO нам не нужен.
Первый пригоден для чтений записей рандомно. В любое место диска. Второй - только последовательно .
Первый создает жёсткую нагрузку на кеши и на механику диска. Второй - более мягкий.Это как вообще? Вот смотрим сигнатуру:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    /**
     * Writes <code>len</code> bytes from the specified byte array
     * starting at offset <code>off</code> to this file output stream.
     *
     * @param      b     the data.
     * @param      off   the start offset in the data.
     * @param      len   the number of bytes to write.
     * @exception  IOException  if an I/O error occurs.
     */
    public void write(byte b[], int off, int len) throws IOException {
        writeBytes(b, off, len, append);
    }

Наличие 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) не потому что так быстрее, а потому что чтобы данные не потерять.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767367
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
razlivПри заполнении HashMap, большим значением элементов.
Есть ли возможность свопа на диск, или другого способа экономичной работы с большиминтересно а перенос HashMap в субд не поможет?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767405
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов.....
Но главное - не блокировать ожидание записи.Журнал в БД обеспечивает atomicity и durability, к производительности это никакого отношения не имеет, откуда по-вашему возьмется производительность, если с журналом нужно уже в два места писать, а запись в журнал "последовательная" (да еще и с O_SYNC) не потому что так быстрее, а потому что чтобы данные не потерять.[/quot]
Надо это производителям почти всех СУБД рассказать, а то они не знают =)


Топик - бери любую удобную key-value dbms
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767437
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    /**
     * Writes <code>len</code> bytes from the specified byte array
     * starting at offset <code>off</code> to this file output stream.
     *
     * @param      b     the data.
     * @param      off   the start offset in the data.
     * @param      len   the number of bytes to write.
     * @exception  IOException  if an I/O error occurs.
     */
    public void write(byte b[], int off, int len) throws IOException {
        writeBytes(b, off, len, append);
    }

Наличие 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.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767438
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловmaytonМожно провести эксперимент - читать терабайтный файл последовательно.
А потом тот-же файл блоками (по 1,2,4,16 Mb) как хотите произвольно и замерять как просядет скорость.
Вы-таки определитесь, пишите вы или читаете.

В самом начале топика я выразил сомнение по поводу скорости инициализации подобной дисковой мапы.
Инициализация предполагает запись.

Про эксперимент - пока отложим.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767445
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловЖурнал в БД обеспечивает atomicity и durability, к производительности это никакого отношения не имеет, откуда по-вашему возьмется производительность, если с журналом нужно уже в два места писать, а запись в журнал "последовательная" (да еще и с O_SYNC) не потому что так быстрее, а потому что чтобы данные не потерять.
Я говорил о физическом уровне. Об оптимзиации дисковых операций в DBMS.

Вы (очень резко) прыгнули в ACID (atomicity, durability) про которые мы еще не говорили. Да и автор пока не выставлял
требований. Хотя журнал (redo-log, write-ahead-log) может быть использован для обеспечения durability. Да.

Я сейчас не помню как там в этих key-value хранилищах. Но обычно владелец волен выбирать режим в котором
он будет работать. Транзакционный или не транзакционный.

А для многих операций уровня ETL, bulk-load и прочих (массовых) манипуляций с данными обычно разработчик
или DBA сознательно выбирает не-транзакционный режим. Например стартует биржевая система. Она должна
в несколько минут прогрузить данные из обычной БД в свой более быстрый key-value. Я-бы здесь сознательно
выбирал отключение транзакций ибо нету еще никаких пользователей (система в процессе загрузки) и сама
по себе операция достаточно проста по реакции на ошибку. Если что-то пошло не так - просто загрузим еще разик.
Нам важнее быстро стартовать операционный день. А после старта уже пул коннекшенов подключится в режиме
транзакций как и положено.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767448
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, наличие оффсета как бе намекает, откуда из массива переданных байт начинать писать, а не "куда".
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767455
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗдесь offset - применительно не к файлу а к источнику. К массиву байтов.Тогда понятно чего там int, тем не менее fos.getChannel().position() будет делать seek().

maytonПо поводу API операционной системы - вы правы. Почти все файловые API в конечно счете
будут сводится к open/fseek/read/write/close для Unix и к другим CreateFile.. (там более длинное
название в Windows). И на уровне железа будут отображаться в атомарные операции
записи сектора на диск для HDD или для какой-то примитивной операции передачи данных блочно
для SSD.Там еще есть DMA, оно же zero-copy и пр. MappedByteBuffer в жаве именно его реализует.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767467
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, что там реализовано в java - вообще никого не волнует, если SSD физически при записи работает с блоками по 1mb(или по сколько там?). И каждая рандомная запись блока размером меньшим 1 mb будет сопровождаться определенным кол-вом IOPs:

-прочесть весь блок из 1 метра
-заменить в нем на наш маленький блок
-записать обратно

Отсюда проистекает так называемая оптимизация под железо, когда пишут сразу "нужным" размером блока", а не маленькими или большими, про то (частично) майтон и говорит.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767478
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловТам еще есть DMA, оно же zero-copy и пр. MappedByteBuffer в жаве именно его реализует.
Аккурат в новый год у меня была попытка выпрыгнуть из Java условностей и прыгнуть
в недра ОС (в основном меня интересовали Windows-10 и Linux последних версий ядра)
чтобы понять что там и как. К сожалению сообщество отреагировало вяло. Толи
салат Оливье был плох толи Шампанськое...

Вот он кстати https://www.sql.ru/forum/1307294/tyapnichnyy-novogodniy-mmap
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767485
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Года три назад, у LevelDB драйвера для жава были какие-то ну очень кривые. Да и по тестам, отзывам, нишевой продукт с массой специфики

Когда для себя выбирал, остановился на банальном SQL Lite, лично мне скорости вполне хватило. По тестам в И-нет (сам не тестил) особого профита у LevelDb не видно, а проблемы на форуме часто описывают. Ну нафиг такие эксперементы )))
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767486
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин-прочесть весь блок из 1 метра
-заменить в нем на наш маленький блок
-записать обратноа не делает ли это всё update из любой субд?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767489
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяrazlivПри заполнении HashMap, большим значением элементов.
Есть ли возможность свопа на диск, или другого способа экономичной работы с большиминтересно а перенос HashMap в субд не поможет?
Надо спросить у автора. Мысль здравая.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767501
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинОтсюда проистекает так называемая оптимизация под железо, когда пишут сразу "нужным" размером блока", а не маленькими или большими, про то (частично) майтон и говорит.Оно возникает только если запись идет мимо кеша ФС, т.е. файлы нужно открывать с O_DIRECT и дальше приседать, что, к примеру, в Linux не рекомендуется делать.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767530
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы очень не хотел обсуждать тему кеша ОС. Она очень путает карты. Особенно когда хранилище
превысило память на 10-100% а мы ради этого уже втащили в постановку key-value БД.

У нас нет чистой алгоритмизации а есть эвристика на тему что попадет
в кеш и что вобще автор будет делать с базой в части статистики.

Я беру самый самый worst case. Когда размер БД в несколько раз уже превысил доступную
память и соотв все кеши бесполезны.

Рассматривать этот диапазон 10-100% я не хочу. Мне это просто неинтересно.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767545
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем если речь идет о 10-100% оверхеда по памяти - то лучше просто купить память на сервак и растянуть Xmx
по максимуму насколько это возможно.

Если OutOfMemory будет регулярным и есть тенденция что база вырастет очень резко - тогда надо действительно
key-value хранилище. Решать автору вобщем-то.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767606
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде варианты очевидны:
1. ОЗУ на сервере не хватает и нет супер жестких требований по производительности - РСУБД
2. ОЗУ на сервере не хватает, но производителность РСУБД не устраивает - подбираем базу под свои экзотические потребности, смотрим всякие Key-value, NoSQL и маскирующиеся под РСУБД, но модные внутри (а-ля тарантул)
3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache
4. Ограничений по ОЗУ нет, но нужен персистенс и супер производительность - берем IMDG решение
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767652
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir....
3. Ограничений по ОЗУ нет, требований по персистенсу нет, производительности модных СУБД не хватает, а просто приложению сложно ворочать много объектов в хипе - берем либу для off-heap cache
....

При этом аккуратно смотрем, кто из студентов делал эту мега-либу. Если есть фотка и девочка-студент грудастая - можно за ней либу потестить.
Если фотки нет, то оно Вам надо, за студентами их студенческие поделки тестить?

Не видел ни одной нормальной либы для off-heap. Нормальные (более-менее) есть, но они все для специфических задачь. Если value для Map'а могут быть разного размера, то удаление данных из off-heap, уже не тревиальная задача (фрагментация). Насколько стоит замусоривать память операционной системы и что этим при активной работе в режиме 24x7 можно достигнуть, лично мне не очень понятно. Но я бы на реальных PROD серверах эксперементировал бы с опаской.

IMHO & AFAIK

Если такое тащить в проект, то только понимая, что притащенный copy-past'ом из I-net'а код самому же придется и поддерживать. А тогда, проще уж свою либу написать (методом Copy-Past'а) заточенную под свои данные и паттерн нагрузки.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767682
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще ... глубоко не вникая в детали. Я-бы установил Eclipse Memory Analyzer.
И посмотрел-бы что вообще лежит в этой хеш-мапе. Если там к примеру
есть дубликаты строк - то можно поиграть в справочники. Или заменить
толстые типы данных (Date) на атомарные (long) если бизнес-логика позволяет.
Булевы - слить пакетом в одно целое (по аналогии с С++ bitfields).

Вобщем до того как покупать память и ставить СУБД просто проанализировать
top 10 memory consumers. Вангую что там будет char[] но что внутри надо поисследовать.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767684
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВангую что там будет char[].

Шерлок, но как?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767686
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинmaytonВангую что там будет char[].

Шерлок, но как?
А он везде...
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767690
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА он везде...
+++

:-)
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767701
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, но да, понятно, что на свой страх и риск, но если надо, то что уж делать.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767716
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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) смысла вообще не вижу.

Это с ходу. Могу ошибаться.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767721
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 студента, так ведь?
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767723
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если взять исходный вопрос ТС, то сколько человек делает проект - не важно. Все равно получится:



...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767751
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevLeonid Kudryavtsev...Нормальные (более-менее) есть, но они все для специфических задачь....

LongLongHashMap все хранит в OffHeap:
1) AFAIK а разница в скорости доступа heap vs off heap, как бы не маленькая (должно быть разы, вплодь до порядков. Но не тестил!).
2) Маппа хранится одним куском. Что для ОЧЕНЬ большой маппы, плохо. Т.к. фрагментацию памяти в ОС никто не отменял. (на данном форуме был топик в подфоруме Delphi, что free памяти навалом, а массив не выделяется)

LongObjectHashMap values вроде хранить в обычном heap'е. Экономить на keys (с учетом потери скорости на offheap) смысла вообще не вижу.

А какую задачу решает LongLongHashMap? Там по API - непонятно. Нет внятного description.
Если индексы больше 2 Гига то это точно оно. Ибо декларировано. А насчет другого... ну лучшее враг
хорошего.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767778
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще пару названий вспомнил.

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 используется. Опенсорцные разработки Оракла
замерли на какой-то версии. Кажется новых нет.
...
Рейтинг: 0 / 0
Out of memory errror - есть ли возможность Свопа ?
    #39767916
razliv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, никогда раньше не работал с такими вещами - раньше стандартных Явовских
коллекций вполне хватало. Но теперь открыл для себя новую область :)

MapDB хватило для моих нужд, фурычит :)
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Out of memory errror - есть ли возможность Свопа ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]