我发现了 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 从其他线程启动时会消耗这么多内存?还是我的申请中有任何错误?