Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rsacramento

aumentar a memória

Mensagens Recomendadas

rsacramento

uso java6, eclipse/ant e tenho winxp com 2G de memória

neste programa que estou a desenvolver, às tantas tento ler uma célula de uma folha excel (que tem montes de fórmulas) e dá logo um erro (mal lhe passo o caminho e o nome do ficheiro):

java.lang.OutOfMemoryError: Java heap space

como é que eu posso aumentar a memória para obviar a este erro?

obrigado antecipadamente

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Catarrunas

Ola tudo bem,

Isso nunca me aconteceu, mas depois de uma pesquisa rapida pelo google, sobre o erro, encontrei este site que te pode ajudar.

http://hausheer.osola.com/docs/5

Basicamente ou tentas ver porque estas a gastar tanta memoria, algum ciclo não acabado, qq coisa.

Ou aumentas o tamanho de memoria do heap.

Espero ter ajudado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rsacramento

hmm, afinal não está fácil

creio que se eu arrancasse com a aplicação através da linha de comando, então escreveria java -Xms32m -Xmx512m etc

contudo a aplicação é enorme e arranco com ela ou através do eclipse ou através do ant

já fui ao eclipse e fiz: C:\eclipse\eclipse.exe  -vmargs -Xms256m -Xmx1000m, mas não deu nada

de maneira que estou de volta ao princípio: não sei como dizer ao eclipse ou ao ant que quero aumentar a memória ...

alguém terá alguma sugestão?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Catarrunas

Como diz no site em cima :

You can set this either in the Java Control Panel or on the command line, depending on the environment you run your application.

Portanto se estas a usar o netbeans ou o eclipse, não sei como se faz mas talvez possa ser :

Carregas em cima do project -> Properties -> build -> compiling -> adicional compiling options

E ai escreves o que estavas a tentar. Nao sei se funciona estou só a sugerir.

Não conheço o código mas acho mais provável ser um ciclo que esteja a encher a memoria, experimenta a fazer debug pra ver onde falha.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rsacramento

obrigado pelas respostas, Catarruna

a minha aplicação está pronta e ok; nela leio um ficheiro excel

ao tentar que ela leia um outro ficheiro excel (que em duas folhas tem quase 8 megas), é que me aparece a excepção

usando a linha de comandos e aumentando aí a memória, consigo correr e fazer o jar; para ler este é que preciso outra vez de manualmente dar mais memória, o que é uma chatice...

quanto ao eclipse li tudo, desde coisas que encontrei no google até ao faq oficial do eclipse, mas a solução deles não funciona comigo...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

As definições de execução dentro do Eclipse podem ser configuradas nas opções de execução/debug acessíveis através das propriedades do projecto.

Properties > Run/Debug Settings > New ou Edit conforme já exista uma definição > Separador "(x) = Arguments" > Secção VM Arguments.

Colocas aí os argumentos como se estivesse a indicar os mesmos na linha de comandos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rsacramento

excelente, Knitter! obrigado - funcionou

agora que o eclipse não dá o OOM quando corre, gostava de saber como dar mais memória ao java sem ser manualmente, já que, por exemplo, se criar um jar, tenho de, manualmente (consola>java -Xms256m -Xmx1024m etc), dar-lhe mais memória para o correr...

já tentei aumentar a memória na consola do java através do painel de controle, mas não funciona... dá o erro à mesma

se alguém soubesse como se atribui definitivamente mais memória ao JRE ficava mesmo agradecido :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Este tipo de argumentos afecta a forma como a JVM funciona, portanto só podem ser definidos durante o arranque da JVM e não no arranque da aplicação Java, já que antes de uma aplicação Java iniciar, a JVM já iniciou e já tem definidos vários parâmetros que são necessários.

Portanto, não há forma nenhuma de, a partir da aplicação ou dos ficheiros de controlo da aplicação, neste caso os ficheiros MANIFEST usados nos JARs, controlar os valores destas propriedades, são propriedades da máquina virtual e nunca da aplicação. Desta forma o único modo que conheço de fazeres isso é criares scripts de execução para a aplicação.

Em linux tipicamente criam-se ficheiros de shell scripting, os ditos .sh, em windows ou usas batch files ou usas uma aplicação para criar executáveis que não fazem mais que arrancar um determinado comando, deste modo ficas com um .exe que pode ser simplesmente clicado. De qualquer modo, só usando scripts onde colocas o mesmo que colocarias na consola para arrancar a aplicação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rsacramento

mais uma vez obrigado pela pronta resposta!

pois, o que até já fiz foi criar um .bat que de facto aumenta a memória e corre o jar... mas acho isto um pouco deselegante

o que eu gostava mesmo era de saber como aumentar, a priori e de modo permanente, a memória do JRE..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Pode parecer pouco elegante mas é a única solução, ou o script ou um wrapper :P

Não conheço forma nenhuma de especificar essas opções por omissão, não digo que não exista, não sou um perito nas ditas opções :D , mas pela documentação que consultei não encontrei referência nenhuma a configurar essas opções para todas as aplicações no sistema. Aliás, essas são opções não standard, podem ser alteradas ou desaparecer em versões futuras.

No entanto um local onde poderás investigar será a pasta lib da instalação do teu JRE/JDK, existem vários ficheiros de configuração nessa pasta que definem o comportamento da JVM e das aplicações.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rsacramento

mais uma vez obrigado pela resposta

de facto tens razão: dei uma volta pela pasta de instalação do JRE e só fala nos -Xms etc, mas nada de concreto

estou um pouco desolado, mas se tem de ser...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.