【问题标题】:SourceKitService sucking memory and grinding all processes to a haltSourceKitService 吸收内存并停止所有进程
【发布时间】:2015-07-21 09:58:18
【问题描述】:

我在使用愚蠢的 SourceKitService 时遇到了很多麻烦。它有时会占用 20GB 的内存,这意味着我的笔记本电脑几乎没用,它太慢了。我正在使用 xCode 6.4 并在 Swift 中工作。我正在处理一个大型项目,所以我确信这会导致问题。

但我只是想知道是否有人找到了驯服 SourceKit 野兽并阻止它失控并夺走我所有记忆的方法?

【问题讨论】:

  • 更新:刚刚发现 SourceKitServe 消耗 30GB 内存。
  • 不是编程问题。示例 Xcode,运行 sysdiagnose (Shift-Control-Option-Command-Period) 并通过radar 向 Apple 报告。这就是你所能做的。否则,您将获得基于意见的答案、提示,而无需真正的知识/解决方案。
  • 感谢您的建议。哪里是获得“基于意见的答案和提示”的最佳地点。这就是我所追求的。我会尽我所能。
  • 我会在Apple Developer Forums 搜索并询问此类问题。您将有更好的机会让来自 Apple 的人也可以阅读和回答它。但恐怕你最终会得到相同的答案 - 样本、系统诊断、报告……谁知道呢,值得一试。
  • 你不是alone

标签: xcode swift io sourcekit


【解决方案1】:

我在 XCode 7 中遇到了这个问题,升级到 XCode 8 后它仍然存在。在我的例子中,我将它缩小到一些调用数据库包装器 (GRDB) 的代码,如下所示:

db.execute(sqlStatement,arguments:["ParamNameA":someValueA,"ParamNameB":someValueB]);

如果参数字典中的元素数量超过 20 个,SourceKitService 的内存使用会变得疯狂(15 GB 或更多)并且编译时间超过 10 分钟。如果元素个数小于等于 20,则 SourceKitService 的内存使用量在 200 MB 以下,编译时间为几秒。

我建议查找包含超过 20 个元素的字典的代码段,并将它们注释掉,看看问题是否消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2014-07-23
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多