Multithreading 从其他线程连接时Sqlite高ram使用率

Multithreading 从其他线程连接时Sqlite高ram使用率,multithreading,sqlite,memory-consumption,Multithreading,Sqlite,Memory Consumption,我发现sqlite有一个问题,我已经有几天没法解决了。问题是,当我尝试从另一个线程然后从main(具有main方法的线程)创建新的数据库(新连接)时,sqlite将分配比平常多得多的内存 这是一个非常简单的例子,我正在尝试做什么 https://pastebin.com/BkU3uMCb 当从主线程打开数据库时,会有内存使用的结果(来自proc/pid/status) VmPeak: 19780 kB VmSize: 19636 kB VmLck: 0 kB VmP

我发现sqlite有一个问题,我已经有几天没法解决了。问题是,当我尝试从另一个线程然后从main(具有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,当另一个线程启动时,它的大小类似于80MB。
有什么原因,为什么sqlite从其他线程启动时会消耗这么多内存?或者我的应用程序中有错误吗?

如果第一个示例也启动了一个线程(该线程什么也不做,或者只是休眠了一段时间),会发生什么情况?您好,感谢您的帮助。我试过了,它启动了一个线程,这个线程分配了一点内存(1-2MB),但并没有这么多。然后它执行所有它必须做的事情。我再试了一次,有结果和更新的源代码。VmData将增长到8MB。