0

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

4

0 回答 0