Hace poco me empecé a probar las aplicaciones que se congele en mi máquina. Yo tengo un iMac con 8 núcleos y 32 gb de RAM corriendo Catalina 10.15.1 completamente revisados. Nada más lejos de la restricción de recursos sin embargo, ciertas aplicaciones de congelación con regularidad. Veo hilos marcados como desconocido a menudo en los seguimientos. Son estas normal hilos? Si es así, ¿qué haría que un hilo se muestran como completamente desconocido en una muestra. Parece extraño que la biblioteca de un hilo que se enlaza podría ser conocidos, en algunos casos, pero desconocido en los demás.
Respuesta
¿Demasiados anuncios?Creo que estás confundido acerca de qué partes de la salida, de hecho, representa hilos:
Sí, los hilos se puede ver en la salida de la "Muestra de un Proceso" en el Monitor de Actividad son definitivamente "normal hilos".
Sin embargo, cada una de las líneas en la captura de pantalla que no representan un hilo cada uno.
Monitor de actividad claramente las etiquetas de cada uno separado del hilo con la palabra "Hilo" - toda la línea está en ligera de color azul (en comparación con el resto que es de color negro).
La captura de pantalla que usted tiene no indican que un hilo es "desconocido", ni tampoco indican que "la biblioteca de un hilo está vinculado a" es desconocido.
Voy a explicar cómo leer la salida de "Proceso de Muestra":
Cada línea azul indica un hilo.
Cada línea negra debajo de la línea azul es una función que ha sido ejecutado por el hilo.
El porcentaje indica la cantidad de tiempo que se gastó en el interior de la función. Usted puede elegir cuando se visualiza si quieres que se muestre como un porcentaje de la rosca o de la de los padres.
El número entre paréntesis (como [0x1100007ffd]) es la dirección de memoria de la función.
El campo justo al lado del porcentaje es el nombre de la función y entre paréntesis, el archivo binario de que el contenido original en la dirección de memoria que se ha cargado.
He aquí por qué incógnitas pueden aparecer:
Tenga en cuenta que el nombre de la función sólo está disponible si la función se ha cargado desde un archivo binario que contenía lo que se conoce como un "símbolo de mapa". Esto hace posible que el programa de ejemplo para los que el código en una determinada dirección de memoria se genera a partir de una función con ese nombre específico en el código fuente original. Si no tienes esa información, se muestra como ???.
Normalmente verás que Objective-C programas de mostrar estos nombres, mientras que los programas en C normalmente no. El desarrollador de un programa en C elige si o no para exponer los nombres, pero por rendimiento/tamaño razones, estas son normalmente de izquierda a cabo en programas pensados para "el público" (en oposición a las pruebas internas).
Del mismo modo el nombre del archivo binario es conocida sólo si código en cuestión fue cargado a través del programa propio binario, o por el enlazador dinámico de una .dylib o similares de la biblioteca compartida. Si el código en la dirección de memoria que llegó hasta allí por cualquier otra razón, el programa de ejemplo no se puede saber el nombre y aparece como desconocido.
Además podrás ver a menudo que los programas que internamente emplear lenguajes dinámicos, JIT, compiladores, intérpretes, etc. se muestran como "??? (in unknown binary)
" en estos listados. Esto es porque el código en que se concreta la ubicación no estaba allí desde el principio - fue generada dinámicamente por el programa a medida que se ejecuta.
Palabra de explicación:
Si usted no sabe el significado de la palabra hilo, un áspero, alto nivel de explicación es la siguiente:
Pensar en una CPU como una máquina que ejecuta las instrucciones en una secuencia. El estado actual de la CPU es el contenido de los registros (las ubicaciones de memoria interna dentro de la CPU que se despegan de RAM), así como el contador de programa (la dirección de la instrucción que se está ejecutando actualmente). Cada vez que una instrucción se ejecuta, los registros pueden ser modificados por el cálculo, y el PC está configurado para una nueva dirección. Normalmente el PC está configurado para la dirección de la siguiente instrucción en la memoria, pero se puede cambiar arbitrariamente. En este punto de vista, la CPU ejecuta un programa único.
Para (aparentemente) ejecutar varios programas al mismo tiempo, el sistema está configurado de modo que la CPU ejecuta un programa como el descrito anteriormente, pero en varias ocasiones "cambia de programa" por el ahorro de su estado (los registros y del PC) a la RAM y carga en otro estado. A partir de entonces es ahora de ejecutar en un lugar diferente en la memoria. Por "cambio" de ida y vuelta entre estos programas, se obtiene la ilusión de ejecutar varios programas al mismo tiempo.
Cada uno de estos "programas" son, en realidad lo que se conoce como un hilo. Así que un hilo es, básicamente, un estado guardado que consiste en los valores de los registros y del contador de programa, que el sistema operativo continuamente guarda y restaura.
En comparación, un "proceso" es lo que se observa como una instancia de ejecución de una aplicación - es decir, todo lo que usted muestreo en el Monitor de Actividad). El concepto es muy similar a un hilo en el que el sistema operativo que permite ejecutar varios procesos a la vez continuamente guardar/restaurar estado, mediante el cual la conmutación entre processen. Un proceso puede tener uno o más hilos, por lo que parte de la conmutación entre el proceso es en realidad la conmutación entre los hilos como se describe anteriormente. Sin embargo, más del estado está siendo guardar/restablecer, como por ejemplo la asignación de memoria de también guardar/restablecer. Esta es la razón por la que los hilos dentro del mismo proceso (en general) acceso a la misma memoria, mientras que los diferentes procesos (en general) no puede acceder a los demás de la memoria.
Tenga en cuenta que en la vida real las cosas son mucho más complicadas. Un sistema puede contener varios núcleos y múltiples CPUs, lo que significa que tiene varios conjuntos de registros y contadores del programa al mismo tiempo. Los hilos también tienen diversos atributos que no se describen aquí.