Skip to content
Home » Consejos para optimizar tu aplicación Java

Consejos para optimizar tu aplicación Java

Estos consejos pueden mejorar el rendimiento de tu aplicación Java.

Optimizar el rendimiento del programa es un asunto complejo. El análisis de rendimiento a menudo se requiere junto con escenarios específicos y para identificar cuellos de botella a fin de presentar recomendaciones de optimización. Sin embargo, es probable que prestemos poca atención a los detalles de codificación normales y mejoremos el rendimiento de múltiples datos. En ese caso, los beneficios de rendimiento acumulativo de optimizar estos datos también son importantes.

Recomendado: Mejor Framework Javascript

Hoy hablaremos de algunos consejos para optimizar los datos del código Java.

Operaciones complejas de enlaces de cadenas usando StringBuilder

Al principio de mi carrera, cuando hacía operaciones de concatenación, definitivamente usaba el método de escritura String a=c+e+d , Esta sintaxis de Java es demasiado útil para los desarrolladores. Pero si usas “+” en un bucle como este, debes tener cuidado.

String a=null;
for(int i=0;i<1000;i++) {
a=a+i;
}

Recomendado: Java Vs Python 2022 ¿Cual elegir?

Todos sabemos que una cadena no es volátil, por lo que cada asignación de cadena en el objeto de bucle creará una nueva cadena en la memoria de la pila. En un cuerpo de bucle, creará numerosos objetos no utilizados una y otra vez, que no solo ocuparán espacio en la memoria sino que también interrumpirán el tiempo del GC(Garbage Colector). Así que, si encuentra un bucle de concatenación, usa StringBuilder en lugar de “+”.

Use ThreadPoolExecutor en lugar de crear subprocesos manualmente

A muchos principiantes les gusta crear sus propios hilos mientras escriben código, lo cual es peligroso.

Si esta creación de subprocesos necesita manejar una gran cantidad de aplicaciones, es probable que su programa cree y elimine subprocesos con frecuencia y cambie contextos de subprocesos con frecuencia, desperdiciando recursos de CPU e incluso quedándose sin memoria.

Recomendado: Por Que Aprender Javascript

Por lo tanto, se recomienda utilizar ThreadPoolExecutor y configure el número adecuado de subprocesos principales y el número máximo de subprocesos.

Asignación Preliminar de Recursos Apropiados al Clúster

Todos sabemos que las clases de colección son como ArrayList,HashMap y ConcurrentHashMap se puede expandir automáticamente, pero esta extensión automática implica replicar y cambiar la matriz básica. Si la expansión es frecuente, definitivamente afectará el desempeño del programa. Entonces, si puede estimar la capacidad de la colección, envíe la asignación inicial directamente.

Use Enum en lugar de Clase constante

A muchas personas les gusta especialmente crear una clase fija en un proyecto como este.

Chicos, ¿pueden reemplazar esto con una enumeración? Enum se ve obligado a verificar sin error. Al mismo tiempo, el rendimiento de uso de las clases de enumeración es mayor. Y hay más ventajas en usar enum. Se puede utilizar con un patrón de estrategia para mejorar la escalabilidad del programa por ejemplo.

Recomendado: Mejores Frameworks Java

Mira, puedes seleccionar dinámicamente una estrategia para descargar archivos de acuerdo a tus necesidades. Puedes usar FileType.EXCEL.download() Para descargar archivos en excel.

Use NIO en lugar de IO tradicional

El IO tradicional está desactualizado. Se recomienda enfáticamente usar NIO para reemplazar el io tradicional. Debido a que el IO tradicional usa el modelo de IO de bloqueo, después de solicitar datos, el subproceso se bloquea desde la preparación de datos hasta la legibilidad de datos.

Además, si el IO tradicional quiere escribir datos en la tarjeta de red, primero debe escribir los datos en la memoria del montón, luego copiar los datos en una pila de memoria fuera de la pila y luego copiar los datos del estado del usuario al búfer de estado del núcleo.

Recomendado: Es Dificil Programar En Java

Finalmente, la CPU le dice a DMA que escriba los datos en la tarjeta de red, que tiene una experiencia de tres copias en total. NiO no solo usa el modelo IO multiplex, sino que también se puede usar la memoria directa para reducir la cantidad de copias de datos para mejorar el rendimiento.

Intente usar un patrón Singleton

Si diseñamos una clase que no requiere seguridad de subprocesos, use el método singleton para usar esta clase, que puede ahorrar memoria. Afortunadamente, para el framework de Spring, los beans de Java singleton son predeterminados(adoro Spring por eso).

Reducir el bloqueo de granularidad

Supongamos que tenemos una función de edición de documentos compartidos y los usuarios editarán el documento compartido al mismo tiempo. Para garantizar la exactitud del documento, debemos utilizar synchronized para garantizar la seguridad del hilo.

Recomendado: Cuanto Lenguajes De Programacion Existen

Si se usa el método anterior, solo un subproceso puede ingresar al bloque de código síncrono para su ejecución, y otros subprocesos solo pueden bloquearse y esperar, incluso si estos subprocesos pueden sobrescribir varios documentos. Podemos mejorar el rendimiento al reducir la granularidad de bloqueo.

No use variables estáticas arbitrariamente

Si un objeto se define como una variable estática, el recolector de basura no recicla fácilmente la referencia de esta variable.

public class Test{
public static A a = new A();
}

El tiempo de vida de la variable estática "a" es el mismo que el de la clase de prueba. Mientras no se descargue el tipo de prueba, el objeto de referencia "a" permanecerá en la memoria hasta el final del programa.

Usar tipos de datos básicos

También puede utilizar tipos de datos básicos en aplicaciones para reducir el consumo de memoria y mejorar el rendimiento de la programación. Si puede usar un número entero, no use su número entero de cobertura o use Double en lugar de Double.

Recomendado: Que Es Un Ide En Java

La clase de carpeta de tipos de datos básicos se almacena en una pila de memoria y se crea una en una pila cada vez que se usa. Si se utiliza el tipo de datos básico, los datos se almacenan en el framework de la pila y la velocidad de acceso de la pila puede ser mucho más rápida que la velocidad de la pila.

Aprende más de programación:

Leave a Reply

Your email address will not be published. Required fields are marked *