Работа и преимущества хранилища вне кучи Ignite по сравнению с хранилищем в куче

Я понимаю, что хранение вне кучи помогает избежать длительных пауз GC, но я хочу знать, как java сериализует объекты при сохранении в куче и как ignite сериализует при сохранении вне кучи? -heap используется для освобождения места и как это соотносится с GC? Каковы тарифы вне кучи по сравнению с хранилищем в куче?

Мы пытаемся POC оценить зажигание и hazelcast, зажигание предлагает хранилище вне кучи, поэтому мы хотим понять его детали, чтобы прийти к выводу.


person Abhinendra Singh    schedule 27.01.2019    source источник
comment
Я не уверен, что вы должны использовать кучу/вне кучи, чтобы решить, что использовать! (Hazelcast также предлагает хранилище вне кучи, но только в своей корпоративной версии.) Почему бы не сосредоточиться на функциях и производительности?   -  person Stephen Darlington    schedule 27.01.2019
comment
Когда дело доходит до функций, оба реализуют Jcache JSR107, так что в остальном они одинаковы, за исключением того, что ignite поддерживает SQL, например запросы, и может выполнять распределенные соединения, а с точки зрения производительности ignite имеет преимущество перед hazelcast. Есть ли что-нибудь еще, что, по вашему мнению, может быть полезно, чтобы решить, какой из них выбрать?   -  person Abhinendra Singh    schedule 27.01.2019


Ответы (1)


Java не сериализует данные, хранящиеся в куче. Вся идея сериализации заключается в переносе объектов из кучи на другой носитель, например вне кучи. Так что просто хранится.

Ignite реализует быструю сериализацию с использованием интерфейсов Binary Objects, Externalizable и Binarylizable.

Ignite не нужно выполнять сборщик мусора за пределами кучи, поскольку он явно отслеживает все пары ключ-значение. Когда что-то удаляется, память сразу становится доступной для использования (GC действительно нужен только для графовых систем, а не для ключей-значений и SQL).

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

person alamar    schedule 28.01.2019
comment
Значит, эта сериализация замедлит производительность? Кроме того, когда вы говорите, что он отслеживает все пары ключ-значение, означает ли это дополнительные накладные расходы, поэтому это происходит за счет памяти? - person Abhinendra Singh; 28.01.2019
comment
Означает ли это также, что при принятии решения о хранении в куче или вне кучи нужно выбирать между небольшим медленным откликом или длительными паузами GC? - person Abhinendra Singh; 28.01.2019
comment
Большое спасибо за ответ, он внес некоторую ясность! - person Abhinendra Singh; 28.01.2019
comment
Да, здесь есть определенный компромисс. Однако, когда вы начнете перебалансировать данные или отправлять их на другие узлы, вам все равно придется сериализовать, даже если вы используете решение в куче. - person alamar; 28.01.2019