当前位置: 首页 > 面试题库 >

SourceKitService消耗CPU并将Xcode暂停

卓麒
2023-03-14
问题内容

这不是Beta版问题。我使用的是Xcode
6.0.1,正式版。我遇到的问题是,当我尝试构建或运行我正在处理的代码时,Xcode长时间不响应,并且SourceKitService消耗了超过400%的CPU(根据Activity
Monitor)。尽管奇怪的是,自9月17日正式发布以来,我一直在使用Xcode 6.0,但是最近才升级到6.0.1,希望它包含针对此问题的修复程序。

关于可能的问题有什么想法?


问题答案:

今天下午早些时候使用Xcode
6.1.1(不是beta,官方发布版本)遇到了这个问题。我在Playground上运行了一些代码,并怀疑这是原因。CPU被钉住将近100%,并且Xcode无法完成构建。

所以这就是我所做的:

1.打开“活动监视器”,其中将SourceKitService显示为主要的CPU。

2.在“活动监视器”中,双击SourceKitService,然后单击“打开文件和端口”部分,这表明它正在处理/ Users / myname /
Library / Developer / Xcode / DerivedData / ModuleCache /目录下的文件用于特定的文件夹。

3.删除指定的文件夹(使用rm -rf从命令行删除)。根据以下内容重新生成缓存:是否可以安全删除Xcode
Derived数据文件夹的内容?

4.再次使用活动监视器,强制退出SourceKitServer。看到Xcode中现在已经太熟悉的标志了,说SourceKitService崩溃了(所以这就是SourceKitService听起来很熟悉的原因!)。

5.重复步骤3。

Mac又是和平的。没有数据丢失,甚至不必重启Xcode(我尝试失败了)。最重要的是,ModuleCache似乎正在循环获取SourceKitService,而删除文件夹似乎可以解决此问题。希望这也对您有用。

脚注:

顺便说一下,导致SourceKitService问题的原因是我的Swift类中的数组声明太长。我在数组中有200多个条目。将其减少到30,错误消失了。因此,该问题可能是由于Apple代码中的某种堆栈溢出(双关语)造成的。



 类似资料:
  • 我有一个Java pc应用程序,一旦加载相应的配置数据,CPU性能就会逐步提高。 基本有2个线程,一个主线程,一个副线程。在主线程中生成一个登录和一个数据加载,而在第二个线程中每10秒生成一次查询。如果会话启动但未加载数据,则第二个线程继续查询但性能最小。CPU消耗的增加是在加载数据后产生的,并且逐渐增加。 此外,如果再次加载数据,则消耗将降至最低,一旦加载,消耗将再次增加。 由于保密问题,我不能

  • 由于请求体处理,我看到了一个CPU消耗高于预期的问题。我的简单应用程序是使用VertX-Web构建的。它接受POST请求,断言正文长度与内容长度头匹配。此应用程序正在使用一个驱动程序对2个HTTP操作进行基准测试。第一个发送1K,第二个发送8K。每1000毫秒一次。尸体只是短信。 在基准测试期间,我发现stackdumps显示多个线程在同一个方法中 io.netty.handler.codec.h

  • ActiveMQ中的持久主题(这似乎是JMS本身的一个障碍)似乎是一个订阅服务器上只能有一个使用者活动。 也就是说,在ActiveMQ文档中: 使用唯一的JMS clientID和持久订阅服务器名称创建JMS持久订阅服务器MessageConsumer。为了符合JMS,对于一个JMS clientID,在任何时间点只能有一个JMS连接处于活动状态,对于一个clientID和订阅者名称,只能有一个使

  • 问题内容: 好的,我在一个空程序上进行了测试,仅运行一会儿(true){}就使我的CPU占用了50%以上的资源。我正在开发一个游戏,它使用while循环作为主循环,并且CPU始终处于100。 我如何才能让Java重复执行某些操作,而又不消耗超过50%的CPU来执行重复操作呢? 问题答案: 添加睡眠以使线程在一段时间内处于空闲状态: 没有睡眠,while循环将消耗所有可用的计算资源。(例如,理论上,

  • 问题内容: 该应用程序具有占用大量CPU资源的长进程,当前该进程在客户端请求时在一台服务器(EJB方法)上串行运行。 从理论上讲,理论上可以将流程分为N个块并并行执行,只要可以收集所有并行作业的输出并将其合并在一起,然后再将其发送回启动该流程的客户端即可。我想使用这种并行化来优化性能。 如何使用EJB实现这种并行化?我知道我们不应该在EJB方法中创建线程。相反,我们应该发布消息(每个作业一个),以

  • 我们使用的是Spring kafka 2.7非阻塞重试机制。在Spring Kafka重试机制中,Kafka listenser使用来自main topic、Retry topic和DLT topic的消息,我们希望侦听器仅使用来自main和Retry topic的消息。 有没有简单的方法来进行设置? 因为我们不希望同一个消费者处理DLT消息。DLT还将被另一个进程使用,以发送请求通知。