Como liberar a memória (não utilizada)?

1

Sendo um novato no trabalho com o amazon ec2, estou tentando fazer meu aplicativo funcionar. Eu tenho me conectado algumas vezes por ssh, eu estive rodando e parando o servidor, algumas vezes a conexão foi perdida, e algumas outras coisas ...

Em algum momento recebi o erro da JVM (meu aplicativo usa o Scala) que não havia memória livre suficiente e não podia alocá-lo para ser executado. O que eu fiz foi reiniciar o servidor. Funcionou. Mas eu acho que deveria haver maneiras mais eficazes. Existe algum?

UPDATE :

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5550000, 715849728, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 715849728 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ubuntu/my-app/hs_err_pid8668.log
    
por アレックス 16.03.2014 / 04:28

1 resposta

1

Eu observo duas alterações:

  • Tenho certeza de que você precisa ajustar o uso de memória da sua JVM (com, para iniciar, -Xmx ) para corresponder à máquina em que você está. Verifique se você não está pedindo muito mais memória do que a sua VM.
  • Frob suas configurações de supercomprometimento. Uma palestra da Re: invent 2013 sugere overcommit_memory=2 e overcommit_ratio=80 . Entrar em um lugar ruim com overcommit fará com que o malloc falhe como você está vendo.
por 17.03.2014 / 14:42