Este NO es un Beta problema. Estoy en Xcode 6.0.1, la versión de producción. El problema que estoy teniendo es que cuando trato de hacer Construir o Ejecutar el código en el que estoy trabajando, Xcode deja de responder durante grandes períodos de tiempo y los SourceKitService consume más del 400% de la CPU (según el Monitor de Actividad). Este problema es nueva, ya que de los últimos días, aunque, curiosamente, ya había estado en Xcode 6.0 desde que fue lanzado oficialmente el 17 Septiembre. Actualizar a 6.0.1 esperando que contienen una solución para este problema.

Alguna idea de qué podría ser el problema?

  • Has comprobado el consumo de memoria? No he tenido este problema durante un tiempo, pero fue muy mal en las betas, donde se iba a consumir toda la memoria RAM y, a continuación, HCF. Fue debido, generalmente, a más líneas de la aritmética, especialmente con los subíndices. Usted tendrá que dividir y conquistar a encontrar los infractores (pero legal) código. Cuando encuentre la línea, por favor intente reproducir en el Patio de recreo, y enviar un informe de errores.
  • Ver también es cierto que con fecha de puestos: stackoverflow.com/questions/24873219/… y stackoverflow.com/questions/24873219/…
  • Todavía hay algunos fallos conocidos como se puede leer en varios hilos en los foros de desarrolladores Apple. Xcode 6.1 Beta 3 resuelve el alto consumo de CPU, pero introduce diferentes. Muy decepcionante.
  • Estoy teniendo un problema similar. Yo tenía el problema en Xcode 7 y el 8. La única cosa que cambia es el código que viene en su Xcode. Mi conjetura es que la indización o nuevo código es la causa de raíz. ¿Esto suele suceder cuando se tire de código a partir de sus aguas arriba?
InformationsquelleAutor zeeple | 2014-10-01

24 Comentarios

  1. 144

    Encontré con este problema con Xcode 6.1.1 antes de esta tarde (no la beta, oficial de la versión de lanzamiento). Yo había estado ejecutando el código en el Patio de recreo y se sospecha que la causa. CPU fue vinculado a casi el 100%, y Xcode no pudo completar la construye.

    Así que aquí está lo que hice:

    1. Abre «Monitor de Actividad», que mostró SourceKitService como la CPU principal de cerdo.

    2. Dentro de «Monitor de Actividad», haga doble clic en el SourceKitService y hacer clic en «Archivos Abiertos y los Puertos» de la sección, que indicaba que estaba trabajando en los archivos bajo /Usuarios/minombre/Biblioteca/Developer/Xcode/DerivedData/ModuleCache/directorio para una carpeta específica.

    3. Elimina la carpeta especificada (desde una línea de comandos, usando rm -rf). La memoria caché se regenera basado en Puedo eliminar de forma segura el contenido de Xcode datos Derivados de la carpeta? .

    4. El uso de un Monitor de Actividad, de nuevo, la Fuerza de Salir de SourceKitServer. Vio el momento-todo-demasiado-familiar firme dentro de Xcode diciendo que SourceKitService se había estrellado (así que por eso SourceKitService sonaba familiar!).

    5. Repite el paso 3.

    El Mac es pacífica, de nuevo. No se pierden datos y Xcode ni siquiera tiene que ser reiniciado (que yo había intentado sin éxito). Línea de fondo es que ModuleCache parece ser cada vez SourceKitService en un bucle y eliminar la carpeta parece solucionarlo. Espero que esto funcione para usted también.

    Bootnote:

    Por el camino, la causa de SourceKitService problema era que yo tenía demasiado tiempo de una declaración de matriz en mi Swift de la clase. Yo tenía más de 200 entradas en una matriz. La redujo a 30 y el error se fue. Así que el problema puede haber surgido debido a algún tipo de desbordamiento de pila en el código de apple (juego de palabras).

    • Gracias por tu respuesta. Usted debe modificar la respuesta en vez de comentar en su propio pesar.
    • He tenido un problema similar con una larga declaración del array en Swift que estaba confiando en la inferencia de tipos durante su inicialización. He encontrado que explícitamente anotar el tipo resuelto el problema.
    • Mismo problema. gran variedad de diccionarios. Acabo de poner todos los datos en una .PLIST archivo y leerlo.
    • Yo estaba luchando con este problema hoy en día, y por desgracia de compensación de la ModuleCache en realidad no ayuda, ya que SourceKitService estaba de vuelta a la utilización de más de 10 GB de memoria dentro de minutos de reiniciar. Yo no uso NSDictionaries mucho o inicializar las matrices grandes, pero yo de código con la expectativa de que el tipo se deducirá para todos, pero ambigua tipo de valores. Ir a través de mi más recientemente editado los archivos de origen y añadir en el explícitas declaraciones de tipo parece haber solucionado el problema para mí.
    • ¿Le molesta a nadie más de los que en 2016 no podemos manejar un 200-elemento de la matriz? He utilizado más de matrices en BASIC en un Atari 600 en los años 80.
    • Mismo problema causado por un 200+ de la matriz. @eddie-sullivan incluso el bloc de notas está empezando a parecer bueno para mí ahora mismo.
    • Gracias por la respuesta. Yo también tuve una serie de países en uno de mis swift de la clase. Eliminar ayudó un montón!
    • Yo tenía el mismo problema y ahora, como @jay492355 mencionado, deberá explícitamente el tipo de la matriz.
    • Aún válida en Xcode 9. Gracias De Apple.
    • Aún así el trabajo con Xcode 9.3. En mi caso, tengo que salir y volver a abrir Xcode para el índice de nuevo. Ahora funciona la función autocompletar de nuevo.

  2. 21

    Yo estaba viendo el problema porque yo estaba declarando un array con alrededor de 60 elementos que se veía así:

    let byteMap = [
    
    ["ECG" : (0,12)],
    ["PPG" : (12,3)],
    ["ECG" : (15,12)],
    ["PPG" : (27,3)],
    ["ECG" : (30,12)]

    Explícitamente anotar el tipo como este:

    let byteMap : [String: (Int, Int)] = [
    
    ["ECG" : (0,12)],
    ["PPG" : (12,3)],
    ["ECG" : (15,12)],
    ["PPG" : (27,3)],
    ["ECG" : (30,12)],

    Yo era capaz de hacer que se detenga. Creo que debe tener algo que ver con Swift de inferencia de tipo y el tipo de comprobación que hace entrar en un bucle cuando se encuentra con una larga matriz.

    Esto fue en Xcode 6.2. También he eliminado el ModuleCache como se describe anteriormente y ahora todo está bien.

    • Sí, este problema es famoso spin.atomicobject.com/2016/04/26/swift-long-compile-time
    • Similar problema para mí en Xcode 8.1. Tengo una matriz de NSConstraintLayout objetos. Funcionó muy bien con 4. Funciona con 6. No tan bueno con 7 y no funciona en todos, con 8. He creado dos matrices con 4 objetos de cada uno y funciona muy bien.
    • Me pregunto por qué esto no sucede todo el tiempo y eso sólo sucede de vez en cuando
    • ¿Crees que si tenía algo así como return ["a", "b", "c", "d", "e", "f"] en una función que devuelve [String] que sería aún tiene problemas con el tipo de inferencia?
  3. 10

    Este problema pasó como 10 veces, 8 veces sucedió cuando he conectado un dispositivo real y no se ha ejecutado a través del simulador.

    Yo no estoy tan seguro de si mi solución es buena, pero para mí creo que el problema era debido a la conmutación entre un simulador y un dispositivo real. Puede sonar raro, pero era como si lo fue la creación de la interferencia entre los archivos de caché de.

    Lo resuelto mi problema:

    • Limpiar la Carpeta de Compilación:( en Xcode) Alt + Shift + Command + K
    • Restablecer la Configuración y el Contenido: (en
      Simulador) Command + Shift + K.
    • Esperó un poco más de lo normal y la sobrecarga de Xcode con constante clics

    Así que, básicamente, antes de intentar ejecutar en cualquier dispositivo nuevo, acaba de eliminar cualquier caché.

    EDITAR

    Yo solo tuve el problema sin ningún tipo de conexión del dispositivo. Acabo de salir de Xcode y la abrió de nuevo y el problema se había ido. No estoy seguro de mi supongo es que podrían ser algunas de las re-indexación problema después de fetch/mezcla de extracción código nuevo.

    • Yo realmente deseaba esto funcionó cus estoy desesperada. Por desgracia, comienza a girar fuera de control otra vez momentos después de que comience la codificación.
    • No estoy seguro, pero a veces pasando de ramas, tirando de aguas arriba se ha resuelto mi problema. Mi punto es que yo no hago lo que el aceptado respuesta es lo que sugiere y sin embargo, mi problema es resuelto de alguna manera todavía no he roto :/
  4. 4

    He resuelto otro problema que estaba causando SourceKitService uso de hasta 13 GB de memoria…

    Tuve Cadena(formato de línea con un montón de argumentos:

    return String(format: "%d,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", samples.count,sum1.x,sum1.y,sum1.z,sum1.rx,sum1.ry,sum1.rz,sum2.x,sum2.y,sum2.z,sum2.rx,sum2.ry,sum2.rz,sum3.x,sum3.y,sum3.z,sum3.rx,sum3.ry,sum3.rz)

    cuando se sustituye con esto funcionó bien (no hay memoria de construir y normal el consumo de CPU)

        var output: String = ""
    
        output += String(format: "%d,", samples.count)
        output += String(format: "%.3f,%.3f,%.3f,", sum1.x, sum1.y, sum1.z)
        output += String(format: "%.3f,%.3f,%.3f,", sum1.rx, sum1.ry, sum1.rz)
        output += String(format: "%.3f,%.3f,%.3f,", sum2.x, sum2.y, sum2.z)
        output += String(format: "%.3f,%.3f,%.3f,", sum2.rx, sum2.ry, sum2.rz)
        output += String(format: "%.3f,%.3f,%.3f,", sum3.x, sum3.y, sum3.z)
        output += String(format: "%.3f,%.3f,%.3f", sum3.rx, sum3.ry, sum3.rz)
    
        return output
    • ¿Cómo calcular que este trozo de código es la cuestión?
  5. 3

    Yo hemos estado trabajando en este tema con Xcode 9, y exploró varias soluciones. Para mí, desactivación de Control de código Fuente parecía a hacer el truco.

    Xcode -> Preferences -> Source Control -> uncheck "Enable Source Control"

    Si esto no funciona, me gustaría recomendar el uso de la renice comando en el terminal. Más que aquí

    la desactivación de Control de código Fuente

    Otros pasos que he intentado, pero no ayuda:

    1. Cerca de Xcode -> Borrar Datos Derivados de la
    2. ciclismo máquina
    3. «limpio» proyecto
  6. 2

    A mí me ha funcionado para eliminar los Datos obtenidos. Seleccione «Producto» en el menú y mantenga pulsada la tecla Alt y seleccione «Limpiar la Carpeta de Compilación’. Shortkey: Alt + Mayús + Comando + K

  7. 2
    1. Dejar De Xcode
    2. Ejecutar en la Terminal:

    rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*


    Nota la diferencia entre LNI aceptados por la respuesta y esta:

    1. Siempre es mejor no accidente de bloqueo. Especialmente, cuando se trata de Xcode procesos/componentes.
    2. Yo no soy un desarrollador de Apple, pero parcial eliminar la caché puede romper su integridad. No me di cuenta de cualquier retraso significativo después de la limpieza de todo el caché.
  8. 2

    Me paso 4 horas a la figura de los problemas, en una larga compilación de mi proyecto.
    El primer intento se lleva a 42 minutos a compilar.

    Puedo borrar todo el cache de /Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/ como fue sugerido por @LNI, después de reiniciar SourceKitService y aplicar algunos cambios para la código:

    1)
    A

        var initDictionary:[String:AnyObject] = [
                        "details" : "",
                        "duration" : serviceDuration,
                        "name" : serviceName,
                        "price" : servicePrice,
                        "typeId" : typeID,
                        "typeName" : typeName,
                        "url" : "",
                        "serviceId" : serviceID,
                        "imageName" : ""
                    ]

    De

        var initDictionary= [
                        "details" : "",
                        "duration" : serviceDuration,
                        "name" : serviceName,
                        "price" : servicePrice,
                        "typeId" : typeID,
                        "typeName" : typeName,
                        "url" : "",
                        "serviceId" : serviceID,
                        "imageName: "" ]

    2) A

                if let elem = obj.property,
                    let elem2 = obj.prop2,
                    etc
                     {
                     //do stuf here
                }

    De

               let value1 = obj.property ?? defaultValue

    3)

    A

               let serviceImages = images.filter { $0.serviceId == service.id }
               let sorted = serviceImages.sort { $0.sort > $1.sort }

    De

                let serviceImages = images.filter { $0.serviceId == service.id }. sort { $0.sort > $1.sort }

    Como resultado el tiempo de compilación – 3 min, no tan rápido, pero mejor para 42 min.

    Como resultado, antes de SourceKitService – tomar ~5,2 Gb de memoria y después de ~0.37 Gb

    SourceKitService Consume CPU y Muele Xcode para Detener

  9. 2

    No crear diccionario en swift sin especificar tipos de datos o con [Cadena:Cualquier]

    Si utilizamos Cualquier tipo, el compilador podría ejecutarse en un bucle infinito para comprobar el tipo de datos.

    No crea ningún error de compilación, hará que nuestro mac se congele en ‘la compilación de swift archivos de origen» con la adquisición de la memoria tanto para las tareas que el llamado ‘swift’ & ‘SourceKitService’.

  10. 2

    Me he encontrado con un problema. Fuente kit de servicio estaba usando 10 gb de uso. Swift proceso en el monitor de actividad llega a más de 6 GB de uso. Yo estaba usando el siguiente código:

    var detalles : [String : Cualquier] = [«1»:1,
    «2»:2,
    «3»:3,
    «4»:4,
    «5»:5,
    «6»:6,
    «7»:7,
    «8»:8,
    El «9»:9,
    «10»:10,
    «11»:11,
    «12»:12,
    «13»:13,
    «14»:14,
    «15»:15,
    «16»:16]

    He cambiado el código siguiente para resolver este problema:

    var detalles : [String : Cualquier] = [:]

    detalles[«1»] = 1

    detalles[«2»] = 2

    detalles[«3»] = 3

    detalles[«4»] = 4

    detalles[«5»] = 5

    detalles[«6»] = 6

    detalles[«7»] = 7

    detalles[«8»] = 8

    detalles[«9»] = 9

    detalles[«10»] = 10

    detalles[«11»] = 11

    detalles[«12»] = 12

    detalles[«13»] = 13

    detalles[«14»] = 14

    detalles[«15»] = 15

    detalles[«16»] = 16

    • Hombre…. ¿quién hubiera pensado…. Yo exactamente había un código similar y había SourceKitService chupando la vida fuera de la CPU. Cambiar el código que acaba de hacer que se vaya.
  11. 1

    Enfrentamos al mismo problema en Xcode 7.2 (7C68)

    La solución fue implementar un método de un protocolo, que en mi clase había en la definición.

  12. 1

    Esto es todavía un problema en la Versión de xcode 7.3.1 (7D1014)
    la causa fue para mí, como LNI señaló, demasiado largo matriz, no tanto tiempo, en realidad.
    He solucionado mi problema por la rotura de la matriz en diversas matrices como este:

    let firstLevel = [
    [1, 0, 1, 0, 1],
    [0, 0, 0, 0, 0],
    [1, 0, 1, 0, 1],
    [0, 0, 0, 0, 0],
    [1, 0, 1, 0, 1],
    [0, 0, 0, 0, 0]
    ]
    let secondLevel = [
    [0, 0, 0, 0, 0],
    [0, 1, 0, 1, 0],
    [0, 0, 0, 0, 0],
    [0, 1, 0, 1, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]
    ]
    let thirdLevel =     [
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]
    ]
    let map = [firstLevel, secondLevel, thirdLevel]
  13. 1

    Tuve el mismo problema con XCode 8.2.1 (8C1002) y el siguiente código:

    import UIKit
    import AVFoundation
    import Photos
    import CoreMotion
    import Foundation
    class TestViewController: UIViewController
    {
    let movieFileOutput = AVCaptureMovieFileOutput()
    var anz_total_frames = 0, anz_total_miss = 0
    @IBOutlet weak var tfStatistics: UITextView!
    func showVideoStatistics()
    {
    let statisticText:String =             "frames: \(self.anz_total_frames)" + String.newLine +
    "frames/s: \(self.anz_total_frames /self.movieFileOutput.recordedDuration.seconds)" + String.newLine +
    "miss: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine
    self.tfStatistics.text = statisticText
    }
    func formatText4FramesPercent(_ anz:Int) -> String
    {
    let perc = Double(anz)*100.0/Double(anz_total_frames)
    return String(perc.format(".1") + "%")
    }
    }

    y estas extensiones:

    extension String {
    var localized: String {
    return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
    }
    static var newLine: String {
    return "\r\n"
    }
    }
    extension Int {
    func format(_ f: String) -> String {
    return String(format: "%\(f)d", self)
    }
    }
    extension Double {
    func format(_ f: String) -> String {
    return String(format: "%\(f)f", self)
    }
    }

    Lo resuelto por comentar esta línea en TestViewController:

            "frames/s: \(self.anz_total_frames /self.movieFileOutput.recordedDuration.seconds)" + String.newLine +

    Me llevó más de una hora para encontrarlo, espero que se puede ahorrar algo de tiempo de alguien más.
    He presentado un informe de errores a Apple con el número 30103533

  14. 1

    Me estaba enfrentando el mismo problema después de migrar el proyecto a swift 3, encontrar la solución que estaba tomando el tiempo debido a los diccionarios y la matriz creada sin tipo de datos.

  15. 1

    Este comportamiento apareció en mi proyecto cuando se me ha declarado una clase que hereda de sí mismo. Xcode 8.2.1, mediante el uso de Swift 3.

  16. 1

    También he tenido este problema, en mi caso yo estaba declarando una gran variedad como este:

    var myArray: [(String, Bool?)]?
    myArray = [("someString", someBool),
    ("someString", someBool),
    ("someString", someBool),
    ("someString", someBool),
    ("someString", someBool)
    .
    .
    ("someString", someBool)]

    He resuelto el problema mediante la adición de los artículos 1 por línea en lugar de todos a la vez:

    var myArray = [(String, Bool?)]()
    myArray.append(("someString", someBool))
    myArray.append(("someString", someBool))
    myArray.append(("someString", someBool))
    myArray.append(("someString", someBool))
    myArray.append(("someString", someBool))
    .
    .
    .

    esta solucionado el problema.

  17. 1

    Para Objective-C proyectos:

    Tuve el mismo problema, y hay cero código Swift en nuestro proyecto, por lo que no era el tipo de inferencia corrector.

    He intentado todas las soluciones aquí y nada funcionó – lo que FINALMENTE se fija para mí fue reiniciar el equipo en modo de recuperación y ejecutar el disco de reparación. Por fin puedo trabajar en paz de nuevo!

    Supongo que sucedió a causa de algunos rotos los enlaces simbólicos, probablemente apuntando uno hacia el otro y lo que el servicio a correr alrededor en un bucle sin fin.

  18. 1

    Estoy teniendo un problema similar con Xcode 8.2.1 – con una sección de más de 1000 líneas de código comentadas a través de /* */. Comentario de la sección es la causa del problema, y la eliminación de la comentada código de arreglar.

  19. 1

    Me he topado con algo similar a la combinación de varios ?? operadores para proporcionar un valor predeterminado para opcional cadena de valores.

    Estuve experimentando con la depuración de código de abajo cuando el ventilador de mi fiel a mediados de 2010 MacBook Pro comenzó a correr duro. SourceKitService estaba chupando cada ciclo de CPU que se podría conseguir. Comentar o descomentar la línea causante dejó muy claro lo que SourceKitService se ahogaba en. Parece que el uso de más de uno ?? operador para proporcionar un defecto es un problema en una máquina vieja. El trabajo de todo es que simplemente no lo hacen. Divídelo en varias asignaturas, lo que hace que algunos feo de depuración de código es aún más feo.

    marca de posición es una instancia de CLPlacemark. Las propiedades que se usan aquí de retorno opcional cadenas.

    Yo estaba usando Xcode Versión 8.3.2 (8E2002) que se ejecutan en OS 10.12.4 (16E195)

    //one term is not an issue
    let debugString1 = (placeMark.locality ?? "")
    //two terms pushes SourceKitService CPU use to 107% for about 60 seconds then settles to 0%
    let debugString1 = (placeMark.locality ?? "")  + ", " +  (placeMark.administrativeArea ?? "") 
    //three terms pushes SourceKitService CPU use to 187% indefinitely 
    let debugString1 = (placeMark.locality ?? "")  + ", " +  (placeMark.administrativeArea ?? "")  + (placeMark.postalCode ?? "")
    //ugly but it's safe to use
    var debugString1 = placeMark.locality ?? ""
    debugString1 = debugString1 + ", " +  (placeMark.administrativeArea ?? "")
    debugString1 = debugString1 + " " + (placeMark.postalCode ?? "")
    • Creo que este es un problema con la concatenación de cadenas y no ??. Que valdría la pena tratar con "\() \()" (interpolación) en lugar
  20. 1

    La conversión de largo Arrays a Funciones parecen resolver el problema para mí:

    var color: [UIColor] {
    return [
    UIColor(...),
    UIColor(...),
    ...
    ]
    }

    a:

    func color() -> [UIColor] {
    return [
    UIColor(...),
    UIColor(...),
    ...
    ]
    }
  21. 1

    ejecutar en la terminal:

    killall Xcode
    rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
    open /Applications/Xcode.app

    también podría crear un comando de terminal que utiliza este alias:

    echo alias xcodeFix='killall Xcode;rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache;open /Applications/Xcode.app' >> ~/.profile
    source ~/.profile

    y, a continuación, sólo tiene que ejecutar

    xcodeFix
  22. 1

    El problema persiste en XCode 10.0. Se puede solucionar mediante la desactivación de «Mostrar la Fuente de Control de cambios» en el Origen de las opciones de Control.

    SourceKitService Consume CPU y Muele Xcode para Detener

    • Naahhh. Creo que la característica es fresco y necesario.
    • Fresco, pero menos de lo necesario si su molienda Xcode para que se detuvieran.
  23. 0

    https://www.logcg.com/en/archives/2209.html

    SourceKitService se hizo cargo de Swift, la inferencia de tipo de trabajo.

    private lazy var emojiFace = ["?", "?", "?", "?"]

    cambiar de forma explícita el tipo de

    private lazy var emojiFace:[String] = ["?", "?", "?", "?"]

    SourceKitService el uso de la CPU inmediatamente desplegable。

Dejar respuesta

Please enter your comment!
Please enter your name here