Preciso executar um aplicativo Java com uso intensivo de memória que usa mais de 2 GB, mas estou tendo problemas para aumentar o tamanho máximo do heap. Até agora, tentei as seguintes abordagens:
Configurando o parâmetro -Xmx, por exemplo, -Xmx3000m. Essa abordagem falha na criação da JVM. Pelo que pesquisei no Google, parece que -Xmx deve ser inferior a 2 GB.
Usando a opção -XX: + AggressiveHeap . Quando tento essa abordagem, recebo um erro 'Memória insuficiente' que indica que o tamanho do heap é 1273,4 MB, embora meu computador tenha 8 GB de memória.
Existe outra abordagem que eu possa tentar aumentar o tamanho máximo de heap da JVM? Aqui está um resumo das especificações do computador:
- SO: Windows 7 (64 bits)
- Processador: Intel Core i7 (2,66 GHz)
- Memória: 8 GB
- java -version:
java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
java
jvm
jvm-arguments
Alceu Costa
fonte
fonte
Respostas:
Obtenha uma JVM de 64 bits da Oracle .
fonte
Quando você está usando JVM no modo de 32 bits, o tamanho máximo de heap que pode ser alocado é 1280 MB. Portanto, se você quiser ir além disso, precisará invocar a JVM no modo 64.
Você pode usar o seguinte:
Onde,
Você pode sintonizar -Xms e -Xmx conforme seus requisitos (YMMV)
Um recurso muito bom sobre ajuste de desempenho de JVM, que você pode querer dar uma olhada em: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
fonte
Acredito que o limite de 2 GB seja para Java de 32 bits. Pensei que a v1.6 era sempre de 64 bits, mas tente forçar o modo de 64 bits só para ver: adicione a opção -d64.
fonte
Java de 32 bits é limitado a aproximadamente 1,4 a 1,6 GB.
FAQ de heap Oracle de 32 bits
Citar
O limite máximo teórico de heap para a JVM de 32 bits é 4G. Devido a várias restrições adicionais, como troca disponível, uso do espaço de endereço do kernel, fragmentação da memória e sobrecarga da VM, na prática o limite pode ser muito menor. Na maioria dos sistemas Windows de 32 bits modernos, o tamanho máximo de heap irá variar de 1,4 G a 1,6 G. Em kernels Solaris de 32 bits, o espaço de endereço é limitado a 2G. Em sistemas operacionais de 64 bits executando a VM de 32 bits, o tamanho máximo de heap pode ser maior, chegando a 4G em muitos sistemas Solaris.
fonte
A configuração abaixo funciona para mim:
fonte