Multithreading 从其他线程连接时Sqlite高ram使用率
我发现sqlite有一个问题,我已经有几天没法解决了。问题是,当我尝试从另一个线程然后从main(具有main方法的线程)创建新的数据库(新连接)时,sqlite将分配比平常多得多的内存 这是一个非常简单的例子,我正在尝试做什么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
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。