Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
rsacramento

aumentar a memória

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
rsacramento

ajudaste e de que maneira - obrigadíssimo

logo que tiver acesso ao meu pc experimento usar a linha de comando  :thumbsup:

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.