Ubuntu 14 JVM - Não foi possível reservar espaço suficiente para a matriz de marcação de cartão

Ubuntu 14 JVM - Não foi possível reservar espaço suficiente para a matriz de marcação de cartão

Após a atualização para o Ubuntu 14, tenho problemas com todas as JVMs travando.

Eu reinstalo o Java (versões Oracle e OpenJDK). Passei algum tempo ajustando os parâmetros de heap da JVM e agora, finalmente, posso executar aplicativos Java.

Agora, o problema é que toda vez que inicio o SQLDeveloper, minha JVM Eclipse me dá: "Não foi possível reservar espaço suficiente para a matriz de marcação de cartão".

Se bem entendi, tem algo a ver com a alocação de pedaços de memória da JVM.

Existe uma regra que devo seguir para evitar que isso aconteça?

Informações da máquina:

Ubuntu 14.04 LTS; 64 bits; Processador Intel Core2 Duo; Memória de 8 GB

Eclipse: java-7-oracle; -d64; -XX:MaxPermSize=256M; -Xms512m -Xmx512m;

Execução/depuração do Eclipse: java-6-openjdk-amd64; -Xms1024m; -Xmx1024m; -XX:+UsarSerialGC;

SQLDeveloper: java-7-oracle; -XX:MaxPermSize=256M;

Responder1

A JVM está tentando alocar um bloco contíguo de memória. Como tenho memória suficiente no sistema, ela deve estar fragmentada.

Para resolver o problema, defini o tamanho de heap inicial muito baixo (o padrão 128 não funcionou) e permiti que a JVM lidasse com isso.

Alterei os parâmetros de execução da JVM de:

java-6-openjdk-amd64; -Xms1024m; -Xmx1024m; 

Para:

java-6-openjdk-amd64; -Xms64m; -Xmx1024m; 

Atualizar:

Também reduzi o overcommit_ratio de 100 (padrão) para 50.

$ cat /proc/sys/vm/overcommit_ratio

Eu sei que é recomendado mantê-lo 100, mas desde que fiz a alteração, não recebo erros de jvm quando executo o Chromium/Eclipse/SQLDeveloper em paralelo.

informação relacionada