Sqlite высокая оперативная память при подключении из другого потока

Я нашел проблему с sqlite, которую я не могу решить в течение нескольких дней. Проблема в том, что когда я пытаюсь создать новую базу данных (новое соединение) из другого потока, а не основного (потока, у которого есть метод main), sqlite выделит гораздо больше памяти, чем обычно.

Вот довольно простой пример того, что я пытаюсь сделать.

https://pastebin.com/BkU3uMCb

Есть результаты использования памяти (из proc / pid / status), когда база данных открывается из основного потока.

VmPeak:    19780 kB
VmSize:    19636 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      1756 kB
VmRSS:      1756 kB
VmData:      308 kB
VmStk:       132 kB
VmExe:         8 kB
VmLib:      4744 kB
VmPTE:        60 kB
VmSwap:        0 kB

И есть результаты, когда sqlite открывается из другого потока

VmPeak:   158904 kB
VmSize:    93368 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      1636 kB
VmRSS:      1636 kB
VmData:    74040 kB
VmStk:       132 kB
VmExe:         8 kB
VmLib:      4744 kB
VmPTE:        60 kB
VmSwap:        0 kB

Наиболее заметным отличием является VmData, который равен 80 МБ в случае запуска другого потока. Есть ли причина, почему sqlite потребляет так много памяти при запуске из другого потока? Или у меня есть ошибка в моем приложении?

0 ответов

Другие вопросы по тегам