Motivo: o seguinte é comum:
1. A quantidade de dados carregados na memória é muito grande, como obter muitos dados do banco de dados de uma só vez;
2. Existem referências a objetos na classe de coleta e eles não são limpos após o uso, para que a JVM não possa ser reciclada;
3. Existem loops mortos no código ou loops que produzem muitas repetições;
4. Bugs em software de terceiros usados;
5. O valor da memória do parâmetro de inicialização é definido muito pequeno;
Prompts de erro comum:
1.Tomcat: java.lang.outOfMemoryError: Space Permgen
2.Tomcat: java.lang.outOfMemoryError: Java Heap Space
3.WebLogic: Raiz Causa de Servletexception java.lang.outofmemoryError
4.Resin: java.lang.outOfMemoryError
5.java:java.lang.outOfMemoryError
resolver:
1. Solução para o erro motivado pelo servidor de aplicativos: defina o valor da memória do parâmetro de inicialização como grande o suficiente.
2. Soluções para o erro causado pelo código Java: Concentre -se nos seguintes pontos:
1) Verifique se existem loops mortos ou chamadas recursivas no código.
2) Verifique se existe um grande loop que produz repetidamente novas entidades de objetos.
3) Verifique se há uma consulta que obteve todos os dados na consulta do banco de dados. De um modo geral, se você levar 100.000 registros na memória por vez, isso poderá causar estouro de memória. Este problema está bastante oculto. Antes de entrar on -line, havia menos dados no banco de dados e não era fácil ter problemas. Depois de entrar on -line, havia mais dados no banco de dados e uma única consulta pode causar transbordamento de memória. Portanto, tente usar a paginação para consultar consultas de banco de dados.
4) Verifique se os objetos de coleção como LIST, o mapa não foram limpos após o uso. Objetos de coleta, como LIST e MAP, sempre terão referências aos objetos, tornando esses objetos incapazes de serem reciclados pelo GC.
Caso:
1. Quando os dados de consulta de hibernato, ele consiste em muitos dados ao mesmo tempo. Posteriormente, o código nesta parte é ajustado e apenas a quantidade especificada de dados é recuperada por vez, resolvendo o problema com sucesso. 2. Ao fazer testes de estresse, o OutfMemoryError aparece e verifica -se que o recurso da sessão não foi divulgado. É melhor liberar o recurso da sessão através do método Invalidate () da sessão.
3. Um loop morto aparece no programa.
4. O outOfMemoryError aparece quando o tomcat é implantado e executado, e o valor do parâmetro de memória é aumentado para resolver esse problema.
java.lang.outOfMemoryError em Tomcat: Java Heap Space Exception Manipulamento
1. Tamanho da pilha As configurações da pilha JVM referem -se às configurações do espaço de memória que a JVM pode provisão durante a operação do programa Java. Quando a JVM iniciar, ele definirá automaticamente o valor do tamanho da pilha. Seu espaço inicial (isto é, -xms) é 1/64 da memória física e o espaço máximo (-xmx) é 1/4 de memória física. Você pode usar o -xmn -xms -xmx e outras opções fornecidas pela JVM para defini -lo. O tamanho do tamanho da pilha é a soma da geração jovem e da generaion titular. Dica: esta mensagem de exceção será lançada se 98% do tempo for usado para GC e o tamanho da pilha disponível for menor que 2%. Dica: o tamanho máximo da pilha não deve exceder 80% da memória física disponível. Geralmente, defina as opções -xms e -xmx como o mesmo, enquanto -xmn é 1/4 do valor -xmx.
2. Solução: Defina manualmente o tamanho da pilha e modifique o tomcat_home/bin/catalina.sh Adicione a seguinte linha a "echo" usando catalina_base: $ catalina_base "": java_opts = " -servidor -xms800m -xmx800m -xx: maxnewse = 256m.
java.lang.outOfMemoryError: Manipulação de exceções de espaço permgen no tomcat
1. Espaço permgen O nome completo do espaço permgen é um espaço de geração permanente, que se refere à área de armazenamento permanente da memória. Este pedaço de memória é armazenado principalmente pela JVM. A classe será colocada no espaço permgen quando for carregado. É diferente da área de heap onde a instância da classe (instância) é armazenada. O GC (coleta de lixo) não limpará o espaço permgen durante o tempo de execução principal do programa. Portanto, se houver muitas classes em seu aplicativo, é muito provável que ocorra um erro de espaço permgen. Este erro é comum quando o servidor da web pré -compilada JSP. Se você usar um grande número de frascos de terceiros no seu aplicativo da web, o tamanho excede o tamanho padrão da JVM (4M), essa mensagem de erro será gerada.
Solução: Defina manualmente o tamanho MaxPermSize e modifique o tomcat_home/bin/catalina.sh Adicione a seguinte linha a "echo" usando catalina_base: $ catalina_base "": java_opts = " -servidor -xx: permsize = 64m -xx: maxpermsize = 128m de modo a alcançar o objetivo de reduzir o uso repetido de memória de documentos JAR.
java.lang.outOfMemoryError Manipulação de exceções no WebLogic
Prompt de erro: "Causa raiz de ervletexception java.lang.outofmemoryerror"
Solução: Ajuste os parâmetros no commenv em bea/weblogic/Common: Sun se "%Production_mode%" == "True" Goto Sun_prod_mode Definir java_vm = -client Set Mem_args = -xms256m -xmx512m -xx: maxpermsize = 256m Set JAVAnções : SUN_PROD_MODE SET Java_VM = -Server Set mem_args = -xms256m -xmx512m -xx: maxpermsize = 256m goto continua continua
java.lang.outOfMemoryError Quando o Eclipse executa o JBoss: Manipulação de exceção do espaço permgen
Ao executar o JBoss no Eclipse, se demorar muito, às vezes java.lang.outOfMemoryError: erro de espaço permgen. Aqui está uma solução para você:
1) Clique na pequena seta ao lado do ícone de depuração;
2) Clique no item de menu "Configurações de depuração ...";
3) Selecione "JBoss v4.2 no localhost" na árvore "servidor genérico" à esquerda;
4) Clique na guia "Argumentos" à direita e adicione -a em "Argumentos da VM":
-Dprogram.name = run.bat -djava.endorsed.dirs = "d:/jboss405/bin /../ lib/endossado" -xms128m -xmx512m -xx: permsize = 64m -xx: maxpermize = 256m
5) Se você executar o JBoss no modo de linha de comando ou clicar diretamente com "run.bat", você deve modificar as opções JVM no arquivo bin/run.conf, encontre o Java_Opts = " -xms128m -xmx512m ..." Parágrafo, e depois adicione "-xx: permsize = 64m -xx: MAPERMAIR: Salve está bem.
6) NOTA: Os números 128, 512, 64 e 256 podem ser ajustados de acordo com a configuração da sua máquina e clique em "Aplicar".
java.lang.outOfMemoryError Manipulação de exceções em resina
Motivo: esse erro ocorre porque a memória física da JVM é muito pequena. A máquina virtual Java padrão tem uma memória máxima de apenas 64 megabytes, o que pode não haver problema durante o desenvolvimento e a depuração, mas está longe de atender às necessidades em ambientes reais de aplicativos, a menos que seu aplicativo seja muito pequeno e não tenha acesso. Caso contrário, você poderá encontrar um erro no pacote java.lang.outOfMemoryError depois que o programa é executado por um período de tempo. Portanto, precisamos aumentar o tamanho da memória da máquina virtual disponível para o reservatório.
Solução: modifique a opção args em /usr/local/resin/bin/httpd.sh para adicionar parâmetros -xms (memória inicial) e -xmx (o tamanho máximo da memória pode ser usado) que podem ser usados para limitar o uso da memória física do JVM. Por exemplo: Após definir args = " -xms128m -xmx256m", a memória física inicial da JVM é de 128m e a memória física máxima pode ser usada é 256m. Esses dois valores devem ser definidos pelo administrador do sistema de acordo com a situação real do servidor.
O exposto acima é o conteúdo completo da solução perfeita para o problema de manuseio de erros de java.lang.outOfMemoryError trazido a você. Espero que todos apoiem wulin.com ~