Primeiro de tudo, tenho uma caixa com 8gb de carneiro, por isso duvido que a memória total seja o problema. Esta aplicação está a funcionar bem em máquinas com 6gb ou menos.
Estou tentando reservar 3GB de espaço usando -Xmx3G sob "VM Argumentos" em Configurações de Execução no Eclipse.
Cada vez que tento reservar mais de 1500mb, recebo este erro: "Erro ocorrido durante a inicialização do VM; Não consegui reservar espaço suficiente para a pilha de objetos" usando -Xmx3G
O que se passa aqui?
Esta não é na verdade uma questão específica do Eclipse; ela'é uma questão geral Edição Java-on-Windows. It's por causa de como a JVM aloca memória em Windows; ele insiste em alocar um pedaço contíguo de memória, que muitas vezes o Windows pode't fornecer, mesmo que haja pedaços separados o suficiente para satisfazer o pedido de alocação. Existem utilitários que tentarão ajudar o Windows " defrag" sua memória, o que, em teoria, ajudaria esta situação; mas eu'não tentei realmente eles com seriedade, assim pode't falar sobre a sua eficácia. Uma coisa que eu'ouvi algumas vezes que pode ajudar é reiniciar o Windows e, antes de iniciar qualquer outro aplicativo, lance o aplicativo Java que precisa do um grande pedaço de memória. Se você'tiver sorte, o Windows ganhou'não fragmentou seu espaço de memória ainda e Java irá obter o bloco contíguo que é pedido.
Em algum lugar nas interwebs há explicações mais técnicas e análises desta questão, mas não tenho'não tenho nenhuma referência à mão.
No entanto, achei isto, que parece útil: https://stackoverflow.com/a/497757/639520
Certifique-se de que o Eclipse está realmente rodando a mesma JVM que você pensa que está rodando's. Se você usa o java no seu navegador web, você provavelmente tem uma versão de 32 bits flutuando também que pode estar tendo precedência se ele estiver instalado ou atualizado ultimamente.
Para ter certeza absoluta, recomendo adicionar estas duas linhas ao seu arquivo eclipse.ini
no topo:
-vm
C:/Java/jdk1.6.0_27/bin
...onde na minha máquina C:/Java/jdk1.6.0_27/bin
onde a JVM que eu conheço é de 64 bits está localizada. Certifique-se de ter a pasta bin
lá.
(Como bônus, no Windows 7, isso também permite que você realmente "pin the tab" e é por isso que eu tive que fazer isso para meu próprio uso)