Qual é o OrofMemoryError?
Um "OrofMemoryError" em Java é um erro que ocorre quando a Java Virtual Machine (JVM) não tem memória suficiente disponível para executar uma determinada operação com sucesso.
Pode ser causado por vários motivos, como:
Para resolver um OrofMemoryError, precisamos identificar a causa do erro e tomar uma ação apropriada.
No entanto, isso é muito amplo e pode ser aplicado a qualquer aplicativo que seja executado na JVM. Vamos restringir o que pode causar um OrofMemoryError em Jenkins.
Causas de OrofMemoryError em Jenkins
No contexto do cluster Jenkins, há quatro causas principais deste erro. Eles incluem o seguinte:
Diagnosticando a principal causa do OrofMemoryError em Jenkins
Estabelecemos quatro causas potenciais desse tipo de erro em Jenkins. Como reduzimos a principal causa deste erro?
Nesse caso, podemos usar uma ferramenta como o VisualVM, que nos permite visualizar o uso da memória da JVM em nosso sistema.
Esta ferramenta pode identificar a principal causa do OrofMemoryError ao trabalhar com Jenkins.
Navegue até o link a seguir e baixe a versão mais recente da sua máquina da ferramenta Visualvm.
https: // visualvm.Github.io/
Depois de baixado, execute o aplicativo e selecione "Local" para ver o uso da JVM em sua máquina local.
Isso deve mostrar os detalhes do seu sistema, incluindo a memória física disponível, a memória de troca e mais.
Para determinar a causa deste erro, pare Jenkins e inicie -o novamente enquanto monitora o uso da memória da JVM em sua máquina local.
Se o uso da memória maximizar enquanto inicia Jenkins, a causa é um pequeno tamanho de pilha.
No entanto, se o uso da memória aumentar lentamente, isso pode ser um vazamento de memória potencial na sua versão Jenkins.
Se Jenkins usa toda a memória virtual disponível, o kernel do host está ficando sem memória virtual. Você pode consertar isso aumentando a memória virtual disponível ou encerrando as compilações Jenkins em execução.
Como configurar o tamanho da pilha para a JVM
Se você estiver enfrentando o OrofMemoryError devido a um pequeno tamanho de pilha, a solução é apenas para alocar um tamanho de pilha maior.
Podemos configurar o tamanho da pilha inicial e máxima da JVM usando os parâmetros -xms e -xmx.
Nota: Recomenda -se definir o mesmo valor para -xms e xmx para a JVM.
Embora o tamanho de pilha suficiente possa variar dependendo dos recursos do sistema disponível e da carga de trabalho de Jenkins, é recomendável definir o tamanho da pilha como 2 GB (mínimo) e 16 GB (máximo).
Você pode aumentar o tamanho da pilha para Jenkins no Linux. Você pode editar o serviço de inicialização Jenkins com o seguinte comando:
$ sudo systemctl editar jenkins
Você também pode editar o arquivo de serviço manualmente, conforme mostrado no seguinte:
sudo vim/usr/lib/systemd/system/jenkins.serviço
Localize a opção Java_OPTS e adicione as opções -xms e -xmx, conforme mostrado no seguinte:
Environment = "Java_Opts = -djava.awt.sem cabeça = true -xms1g -xmx1g "
Adicionando as opções anteriores Aumente o tamanho da memória da heap para 1 GB. Depois de concluído, você pode reiniciar o serviço Jenkins da seguinte forma:
$ sudo systemctl reinicia jenkins
Você pode aumentar os valores -xms e xmx para Jenkins no Windows, editando o arquivo de configuração.
Por padrão, o arquivo de configuração está localizado em C: \ Arquivos de Programas \ Jenkins \ Jenkins.xml.
Edite o bloco de argumentos do arquivo XML, como mostrado no seguinte:
Uma vez editado, salve o arquivo e reinicie o serviço Jenkins.
Conclusão
Você descobriu a causa do OrofMemoryError ao trabalhar com Jenkins. Você também aprendeu a solucionar as várias causas deste erro. Finalmente, agora você aprendeu os múltiplos métodos de consertá -lo.