O que é estouro de memória? O que é um vazamento de memória?

Diretório de artigos

1. O que é estouro de memória?

 2. O que é vazamento de memória?

3. Como evitar estouro e vazamento de memória?

1. O que é estouro de memória?

        Suponha que o espaço de memória disponível em nossa JVM seja de apenas 3M , mas queremos criar um objeto de 5M , então o objeto recém-criado não pode ser colocado. Neste momento, chamamos isso de estouro de memória. É como um copo d'água com capacidade de apenas 300ml, insistimos em colocar 500ml de água nele, nesse momento a água não pode ser despejada e transborda, o que equivale a estouro de memória. Como mostrado abaixo:

 2. O que é vazamento de memória?

        Suponha que sejam criados dois objetos de 1M, que juntos ocuparão 2M de memória. Quando os objetos se esgotam, esses dois objetos não são liberados , então 2M de espaço de memória sobrarão na memória e serão ocupados. No entanto, nosso código de negócios será executado repetidamente no programa, e cada execução deixará 2 milhões sem liberação. Após a execução repetida muitas vezes, à medida que o tempo se acumula, um grande número de objetos será usado e não será liberado, resultando nestes o objeto não pode ser reciclado , o que é chamado de vazamento de memória .

        Ou seja, durante a execução do nosso código de negócio, alguns objetos deveriam ser reciclados, mas existem outros objetos que os referenciam, portanto o GC não pode reciclá-los automaticamente. Portanto, os objetos de lixo que deveriam ser reciclados não são reciclados. Há cada vez mais objetos de lixo e a memória disponível está diminuindo cada vez mais. Se a memória disponível não puder armazenar novos objetos de lixo, isso eventualmente levará a vazamentos de memória. Vazamentos de memória eventualmente levam ao estouro de memória.

3. Como evitar estouro e vazamento de memória?

1. Liberar recursos de objeto em tempo hábil:

        Após a utilização do objeto, ele deverá ser liberado imediatamente. Por exemplo, para alguns objetos que contêm recursos do sistema, como conexões de banco de dados, identificadores de arquivos, etc., eles devem ser fechados/liberados a tempo quando não forem necessários para evitar a ocupação de recursos do sistema.

2. Configure corretamente os parâmetros JVM:

        Ao configurar corretamente os parâmetros da JVM, como -Xmx, -Xms, etc., configure a memória heap máxima e a memória heap inicial para evitar estouro de memória heap. Você também pode configurar a estratégia de GC da JVM para otimizar a eficiência do GC e reduzir o uso de memória.

3. A codificação obedece estritamente às especificações

        Quando usamos alguns objetos de fluxo, como OutputStream, Reader, BitMap, Document, é fácil esquecer Close. O mais problemático é que a reciclagem deve ser feita sequencialmente.Se a ordem estiver errada, será gerado um ponteiro nulo, portanto, preste atenção durante o processo de codificação para evitar erros de baixo nível.

Acho que você gosta

Origin blog.csdn.net/weixin_71921932/article/details/131087333
Recomendado
Clasificación