herramienta de optimización del rendimiento de Android! Hablando del principio del mecanismo de mensajes de Android, ¡el salario anual supera los 800.000!

Prefacio

¡Para hacerlo bien, primero debe perfeccionar sus herramientas! En la TI moderna, todo programador de Android necesita las mejores herramientas para mejorar sus habilidades y eficiencia. En la industria cruelmente competitiva del desarrollo de aplicaciones de Android, solo los buenos programadores pueden sobrevivir. Debe mostrar a sus clientes la mejor tecnología y capacidades que tiene.

No solo muestre su dispositivo para atraer clientes, sino que también asegúrese de que su aplicación de Android esté construida con la más alta calidad en un tiempo eficiente. Entonces, ¿cuáles son las mejores herramientas para desarrolladores de Android? Hay muchas opciones, pero no todas las herramientas son lo suficientemente buenas. Sin perder tiempo, echemos un vistazo a las siguientes herramientas de desarrollo de aplicaciones de Android.

Scudo es un asignador de modo de usuario diseñado para proporcionar una mitigación adicional para prevenir vulnerabilidades del montón mientras se mantiene un buen rendimiento. Es de código abierto y es parte del proyecto editor-rt de LLVM.

Scudo es actualmente el asignador predeterminado en Fuchsia, que se ha habilitado en algunos componentes de Android y se utiliza en algunos servicios de producción de Google. Aunque originalmente se implementó sobre algunos componentes de sanitizer_common, ahora está reescrito para ser independiente sin depender de otros componentes del compilador-rt, lo que facilita su uso (y otras ventajas de rendimiento y seguridad).

Scudo consta de los siguientes componentes:

Distribuidor primario

Este es un asignador rápido para manejar solicitudes más pequeñas (configurable en tiempo de compilación). Está "aislado", por ejemplo: bloques del mismo tamaño se ubican en última instancia en la misma área de almacenamiento y se separan de otras áreas (la separación de 64 bits es más fuerte y el área de almacenamiento está reservada para el área principal); el maestro asignaciones de nodo Los bloques se asignan aleatoriamente para evitar una secuencia predecible de direcciones (tenga en cuenta que cuanto mayor sea el tamaño, mayor será la previsibilidad de las direcciones entre sí).

Distribuidor secundario

Por lo tanto, las primitivas de asignación de memoria de la plataforma de empaquetado son más lentas y se utilizan para atender asignaciones más grandes. La asignación completada por el servidor auxiliar está rodeada por una página protegida;

Caché local

Estos son el almacenamiento específico de subprocesos y contienen punteros a bloques libres para reducir la contención en la lista libre global. Hay dos modos: modo exclusivo y modo compartido. Usando el modelo exclusivo, cada hilo tiene un caché único, que ocupará más memoria, pero casi no hay contención. Con el modelo compartido, los subprocesos pueden compartir una cierta cantidad de cachés, que se pueden reasignar dinámicamente en tiempo de ejecución en función de la competencia; utiliza menos memoria en comparación con el modelo dedicado y, por lo general, puede satisfacer mejor las necesidades de la plataforma del usuario final.

área de cuarentena

Puede ser equivalente a la lista de liberación retrasada en el rango del montón. Antes de liberarlo al sistema, el bloque lanzado recientemente se reserva por un período de tiempo hasta que se cumpla la condición (generalmente alcanzando un cierto tamaño). Hay áreas de aislamiento con hilos y un área de aislamiento global. En términos de uso de memoria y rendimiento hasta cierto punto, este es el más influyente: incluso un área de aislamiento pequeña puede tener un gran impacto en el proceso RSS. Por lo tanto, está deshabilitado de forma predeterminada y puede habilitarse por proceso (y ajustarse según las necesidades del proceso).

la seguridad

Aplique el tamaño máximo y los valores de alineación, pero también verifique que los punteros proporcionados estén correctamente alineados; estos son controles baratos para evitar el desbordamiento de enteros y detectar errores bajos de asignación pendientes (o abuso)

Antes de cada bloque, hay un encabezado, que almacena información básica sobre la distribución y el código de verificación, y se verifica y verifica para poder detectar si la memoria está dañada.

La suma de comprobación del encabezado, el puntero que se procesará y el contenido del encabezado, esto no significa que la criptografía sea sólida. En cuanto a los datos almacenados en el archivo de cabecera, guarda el tamaño asignado, el estado del bloque (disponible, asignado, aislado), su fuente (malloc, nuevo, nuevo []) y algunos datos internos. El encabezado se opera de forma atómica para detectar intentos de competencia entre subprocesos que se ejecutan en el mismo bloque.

Asegúrese de que la función de liberación sea consistente con la función de asignación del bloque de destino devuelto (por ejemplo: free / malloc, delete / new); asignaremos todo al azar para reducir la previsibilidad tanto como sea posible; uno de los beneficios secundarios del almacenamiento en caché de subprocesos es que si un atacante usa primitivas de asignación en diferentes subprocesos, hacen que sea más difícil para un atacante obtener el bloque requerido en el estado requerido.

Echemos un vistazo a algunos puntos de referencia típicos de los servicios de producción de Google, que involucran muchos subprocesos asincrónicos, protobuf, RPC y otras ventajas, todos los cuales se ejecutan en una máquina Xeon de 72 núcleos con 512 GB de RAM (no para la comparación más rigurosa, pero es mantenerlo actualizado.) La primera métrica es el número de consultas por segundo, y la segunda métrica es el pico de RSS del programa (informado por / usr / bin / time).

Al final

** Un recién llegado de base cero, creo que la persistencia es lo más importante. ** Muchos de mis amigos han venido a aprender de mí y les enseño con mucho cuidado, pero no puedo aguantar en menos de un mes. Creo que hay dos razones principales por las que no pueden persistir:

Planean ingresar a la industria no por interés, sino por los llamados altos salarios en la industria de TI, o porque no tienen planes para el futuro.

Fue muy aburrido cuando empezaste a aprender. Esta es realmente una prueba para ti, por lo que no es fácil ceñirte a ella, pero si estás interesado, no crees que está cansado, no crees que es aburrido. .

¿La actualización tecnológica encontró un cuello de botella? ¿Falta de aprendizaje avanzado en video de Android para mejorarte? ¡También hay muchas preguntas de entrevistas de grandes empresas para preparar su entrevista!

Haga clic en: aprendizaje de Android, documentos de entrevistas, colección de videos

Ven a obtener materiales de aprendizaje para mejorarte a ti mismo para desafiar las dificultades de la entrevista BAT

Para muchos ingenieros de Android, si quieren mejorar sus habilidades, a menudo crecen solos. El efecto de aprendizaje de los sistemas fragmentados es ineficiente, prolongado e indefenso . El gráfico de conocimiento compilado espera tener alguna referencia para los amigos de desarrollo de Android y evitar desvíos. El enfoque de este artículo es si has ganado y crecido, y el resto no es importante. Espero que los lectores puedan tener esto en cuenta.

No importa las dificultades que encontremos, ¡no debería ser una razón para que nos demos por vencidos!

Si tiene alguna pregunta, puede hacerme privado directamente, ¡haré todo lo posible para ayudarlo!

No importa las dificultades que encontremos, ¡no debería ser una razón para que nos demos por vencidos!

Si tiene alguna pregunta, puede hacerme privado directamente, ¡haré todo lo posible para ayudarlo!

Finalmente, deseo que todos los recién llegados puedan perseverar y lograr el éxito en el aprendizaje.

Supongo que te gusta

Origin blog.csdn.net/Sunbuyi/article/details/113105378
Recomendado
Clasificación