Configuración y visualización del tamaño del espacio del montón

1. Establezca los parámetros del tamaño del espacio de almacenamiento dinámico

-Xms se usa para establecer el tamaño de memoria inicial del espacio de almacenamiento dinámico (generación joven + generación anterior)
-X es el parámetro operativo de jvm
ms es inicio de memoria
-Xmx se usa para establecer el tamaño máximo de memoria del espacio de almacenamiento dinámico (generación joven + vieja generación)

2. El tamaño del espacio de almacenamiento predeterminado

Tamaño de la memoria inicial: tamaño de la memoria física de la computadora 1/64 Tamaño de
la memoria máxima: tamaño de la memoria física de la computadora 1/4

3. Configuración manual: -Xms600m -Xmx600m

Se recomienda establecer la memoria de pila inicial y la memoria de pila máxima en el mismo valor durante el desarrollo.

4. Ver los parámetros establecidos:

Método 1: jps para ver el número de proceso, jstat -gc id de proceso
Método 2: agregar parámetros de montón para imprimir información detallada -XX: + PrintGCDetails

Aquí demostramos la segunda forma
Inserte la descripción de la imagen aquí

public class HeapSpaceInitial {
    
    
    public static void main(String[] args) {
    
    

        //返回Java虚拟机中的堆内存总量
        long initialMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
        //返回Java虚拟机试图使用的最大堆内存量
        long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;

        System.out.println("-Xms : " + initialMemory + "M");
        System.out.println("-Xmx : " + maxMemory + "M");

//        System.out.println("系统内存大小为:" + initialMemory * 64.0 / 1024 + "G");
//        System.out.println("系统内存大小为:" + maxMemory * 4.0 / 1024 + "G");
    }
}

Resultado de la impresión:

Inserte la descripción de la imagen aquí

Comparación de 7 períodos clásicos de recolección de basura

Inserte la descripción de la imagen aquí

Cómo elegir un recolector de basura

1. Primero ajuste el tamaño del montón para que se complete la autoadaptación de jvm.
2. Si la memoria es menor a 100M, use un colector en serie
3. Si es un programa autónomo de un solo núcleo, y hay sin requisito de tiempo de pausa, colector en serie (Serie)
4. Si es una CPU de varios núcleos, se requiere un alto rendimiento. Permita que el tiempo de pausa exceda 1 segundo, seleccione JVM paralelo (Parallel GC)
5. Si es multi-CPU, busque un tiempo de pausa bajo y necesite responder rápidamente (por ejemplo, la demora no puede exceder 1 segundo, como aplicaciones de Internet ), use un colector concurrente (CMS), pero la recomendación oficial es usar G1, que tiene un alto rendimiento. Los proyectos actuales de Internet utilizan básicamente G1

Supongo que te gusta

Origin blog.csdn.net/u014496893/article/details/114694595
Recomendado
Clasificación