【问题标题】:memory leak (?) after sqlite+fmdb vacuum commandsqlite+fmdb Vacuum 命令后的内存泄漏 (?)
【发布时间】:2011-03-08 22:17:19
【问题描述】:

我通过 FMDB 包装器在我的应用程序中使用 sqlite。

在调用 VACUUM 之前,我的应用程序的内存使用量为 2.25 MB:

[myFmdb executeUpdate: @"VACUUM;" ];

后记为 5.8 MB,我似乎无法回收内存。真空后,Instruments/Allocations 工具显示大量带有活动字节的 sqlite3MemMalloc 调用,每个调用分配 1.5 K。

没有关闭数据库并重新打开它(一个选项),我该如何清理它?

编辑:关闭并重新打开数据库连接确实会清除内存。这是我的解决方案,除非有人对此有更深入的了解。

【问题讨论】:

    标签: ios sqlite fmdb


    【解决方案1】:

    我在 sqlite-users 列表上发布了这个问题,并得到了建议减少 sqlite 缓存大小的回复。这是通过执行以下语句来完成的(根据需要调整大小值):

    pragma cache_size = 100
    

    编辑:这是释放 SQLite 内存的另一个绝妙技巧。请务必#define SQLITE_ENABLE_MEMORY_MANAGEMENT。

    在此处记录:http://www.sqlite.org/c3ref/release_memory.html

    int bytesReleased = sqlite3_release_memory( 0x7fffffff );
    NSLog( @"sqlite freed %d bytes", bytesReleased );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-03
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多