Использует пространство кучи Java в базе данных SQLite в памяти?

Я разработал инструмент Eclipe RCP, который использует SQLite для хранения большого количества кортежей. Теперь я хотел увидеть разницу в использовании ОЗУ при использовании базы данных SQLite в памяти по сравнению с базой данных на основе файлов. Поэтому я использовал JVisualVM и отслеживал используемое пространство кучи Java с помощью инструмента Trace. В тех же условиях я запустил свой инструмент один раз с версией в памяти и один раз с версией на основе файлов.

Для имитации бенчмарка таблицы в общей сложности содержали более 30 миллионов кортежей, в каждом из которых в среднем по 15 элементов.

Я ожидал, что версия в памяти использует гораздо больше места в куче Java, чем версия на основе файлов. Но оба следа выглядят почти одинаково без заметной разницы. Оба пространства кучи Java имели одинаковый максимум, и они никогда не достигали этого максимума.

Поэтому мой вопрос: использует ли SQLite пространство кучи Java для базы данных в памяти или она находится в другой части памяти, которую JVisualVM не может отслеживать?

К сожалению, я не смог найти ничего об этом в Интернете. Просто в памяти, а не где в памяти.

Спасибо!!


person tralala    schedule 28.07.2014    source источник
comment
Казалось бы, вы только что ответили на свой вопрос   -  person Sam Dufel    schedule 28.07.2014
comment
Драйвер использует кучу для своей рабочей памяти, однако фактические данные хранятся в собственной памяти. то есть вы увидите некоторый мусор, созданный при его использовании, но очень мало памяти, используемой, когда он не используется активно.   -  person Peter Lawrey    schedule 28.07.2014


Ответы (1)


SQLite является родной библиотекой и не использует пространство кучи Java; он использует родную кучу.

person antlersoft    schedule 28.07.2014