我在使用愚蠢的 SourceKitService 时遇到了很多麻烦。它有时会占用 20GB 的内存,这意味着我的笔记本电脑几乎没用,速度太慢了。我正在使用 xCode 6.4 并在 Swift 中工作。我正在做一个大型项目,所以我确信这会导致问题。
但我只是想知道是否有人找到了驯服 SourceKit 野兽并阻止它失控并夺走我所有记忆的方法?
我在 XCode 7 中遇到了这个问题,升级到 XCode 8 后它仍然存在。在我的情况下,我将其缩小到一些调用数据库包装器 (GRDB) 的代码,如下所示:
db.execute(sqlStatement,arguments:["ParamNameA":someValueA,"ParamNameB":someValueB]);
如果参数字典中的元素数量超过 20 个,SourceKitService 内存使用量就会变得疯狂(15 GB 或更多)并且编译时间超过 10 分钟。如果元素个数小于或等于 20,则 SourceKitService 的内存使用量低于 200 MB,编译时间为几秒钟。
我建议寻找具有超过 20 个元素的字典的代码,并将它们注释掉,看看问题是否消失。