JVM - memória reservada

olá a todos,

Espero que vc´s possam me ajudar,

tenho um aplicativo ao qual eu não posso modifica-lo que precisa ter de JVM 1gb alocado, mas quando eu executo o comando no prompt, me vem o seguinte erro:

Comando:
java -jar -Xmx1024m -Xms1024m aplicativo.jar

Erro:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

Se eu usar opção com memória abaixo de 700mb o JVM é carregado, mas durante a execução do aplicativo, vem a msg de falta de memória.

Isso acontece, em 2 equipamentos com Win XP SP3 e um Win Server 2003, todos com a ultima versão do java disponivel.

Sendo que um desses computador que tem o winxp tbm tem linux, e na versão linux carrega 1gb de memóra e meu aplicativo é executado com sucesso.

Alquem sabe como posso resolver este problema?

Abraços.

Talvez seja alguma restrição de alocação de memória destes SOs citados, pois se no Linux funciona o problema não é no computador.

Olá Marco, logo imaginei que não seja problemas de hardware, e sim do SO, vc conhece alguma solução para resolver isso dentro do Windows XP, se eu não me engano ha uma semana atraz eu tinha windows 7 nesse equipamento, e acho que eu havia carregado 1gb no JVM.

Abraços

Olá cobra. A resposta pode estar em um memory leak, nessa aplicação. Execute a jvisualvm, e faça um profiler no software, para ver qual abjeto está alocando memória, e posteriormente não liberando o espaço desnecessário.

Julio,

Mesmo eu executando o seguinte comando, o java me retorna o mesmo erro

java -jar -Xmx1024m -Xms1024m -version

se eu executar o comando acima com as variaveis abaixo de 700 funciona e me retorna a versão do java

java version “1.6.0_18”
Java™ SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot™ Client VM (build 16.0-b13, mixed mode)

então o problema é entre o JAVA e o Ruindows

Abraços.

Julio,

Mesmo eu executando o seguinte comando, o java me retorna o mesmo erro

java -jar -Xmx1024m -Xms1024m -version

se eu executar o comando acima com as variaveis abaixo de 700 funciona e me retorna a versão do java

java version “1.6.0_18”
Java™ SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot™ Client VM (build 16.0-b13, mixed mode)

então o problema é entre o JAVA e o Ruindows

Abraços.
[/quote]

Cobra, aloca um espaço menor de memória no heap, e usa a jvisualvm para ver se não existe memory leaks. Se o seu software está estourando o heap, pode ter certeza que ha leaks ae.

Quanto tem de memória nestas máquinas onde vc tentou rodar?

2gb de memória.

2gb de memória.[/quote]

Concordo com o Julio. Sua aplicação precisa MESMO de 1Gb para rodar? O que você está carregando aí?
Imagens gigantes?

Provavelmente existe algum tipo de memory leak.

2gb de memória.[/quote]

Concordo com o Julio. Sua aplicação precisa MESMO de 1Gb para rodar? O que você está carregando aí?
Imagens gigantes?

Provavelmente existe algum tipo de memory leak.
[/quote]

Olá,
Então eu não desenvolvi o aplicativo, mas ele carrega milhares de informações, sim ele usa um banco de dados de sql de mais de 50mb, não tenho a menor idéia de JAVA. e eu já tentei colocar para criar a JVM com menos e durante a execução do aplicativo ocorre o erro de falta de memória.

Snif.

Você vai carregar o banco inteiro para a memória? E ainda assim, como os 50MB irão se tornar 1GB?

2gb de memória.[/quote]

Concordo com o Julio. Sua aplicação precisa MESMO de 1Gb para rodar? O que você está carregando aí?
Imagens gigantes?

Provavelmente existe algum tipo de memory leak.
[/quote]

Olá,
Então eu não desenvolvi o aplicativo, mas ele carrega milhares de informações, sim ele usa um banco de dados de sql de mais de 50mb, não tenho a menor idéia de JAVA. e eu já tentei colocar para criar a JVM com menos e durante a execução do aplicativo ocorre o erro de falta de memória.

Snif.
[/quote]
Ow Jesus… procura saber sobre a jvisualvm e sobre memory leaks. A aplicação deve ter um memory leak, ou seja vazamento de memoria. Em algum lugar dela existe um objeto sendo alocado na memória, que não está sendo liberado. Se você alocar x de memória, esse vazamento vai consumir x até estourar o heap.
Com a jvisualvm é possível descobrir qual objeto está estourando, e então tomar as medidas cabíveis.

https://visualvm.dev.java.net/

Com um baita memory leak dentro, provavelmente.

Aproveitando o topico, existe alguma maneira de alterar os valores do Xmx e Xms dentro do codigo?
pois preciso que a aplicação nao fique com a janela do prompt aberta…
como acontece quando executo o comando: java -jar -Xmx256m -Xms256m aplicativo.jar