[Resolvido]Java Web Start com Estouro de Pilha

4 respostas
A

Boa Noite Srs,

Estou com um problema de estouro de Pilha na minha aplicação Java Web Start. Tentarei explicar detalhadamente o que acontece. Eu tenho uma aplicação Desktop que faz a reconstrução de imagens em 3D e 2D. Quando essa aplicação foi feita, ocorreu o mesmo erro de estouro de memória ao tentar executar a reconstrução 3D. O erro aparece em um arquivo nomeado hs_err_pid####.log , onde cada “#” é um número.

O arquivo é imenso, e este é apenas o começo. Bem, na aplicação Desktop o problema foi solucionado da seguinte forma:

Pelo NetBeans, botão direito em cima da Aplicação Desktop, escolha [i][u]Properties[/i][/u]. Na janela que aparecer, do lado esquerdo selecione a opção [i][u]Run[/i][/u]. Aparecerá as sub-opções. Escolha [i][u]VM Options[/i][/u] e insira o valor " [i]-ss1000k[/i] ".

Explicação: Adicionando o valor -ss1000k em VM Options, faz com que o valor da Pilha em tempo de execução seja aumentada, evitando assim o estouro.

Meu Problema: Não sei inserir esse comando na minha aplicação para Web. Alguém saberia me informar onde eu poderia auementar o tamanho da pilha? Ou ainda, se existe algum lugar do arquivo JNLP que eu possa colocar esse comando?

Desde já, agradeço a atenção de todos.
Obrigado.

4 Respostas

O

http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html#resources

Procure por java-vm-args

A

Obrigado pela resposta oyama.

Procurei sobre java-vm-args e achei bastante coisa útil! Mas infelizmente meu problema ainda não foi solucionado. Segue abaixo o arquivo .JNLP:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost:8080/teste_jnlp/" href="launch.jnlp">
    <information>
        <title>Teste_jnlp</title>
        <vendor>Rafael</vendor>
        <homepage href="http://localhost:8080/teste_jnlp/index.jsp"/>
        <description>tccInterfaceGrafica</description>
        <description kind="short">tccInterfaceGrafica
        </description>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.5.0+" java-vm-args="-Xms512m -Xmx512m" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="aReconstrutor.jar" main="true" download="eager"/>
        <nativelib href="avtk.jar" />    
    </resources>
    <application-desc main-class="Main">
    </application-desc>
</jnlp>

Sendo que,

-Xms512m = tamanho inicial da pilha : 512megabytes
-Xmx512m = tamanho máximo da pilha : 512megabytes

em:

<resources>
        <j2se version="1.5.0+" java-vm-args="-Xms512m -Xmx512m" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="aReconstrutor.jar" main="true" download="eager"/>
        <nativelib href="avtk.jar" />       
    </resources>

Eu sei que 512megabytes para o tamanho da pilha é um absurdo. Porém, mesmo com esses valores sendo passados, ainda ocorre o estouro de pilha, a aplicação é fechada e um arquivo de log é criado (possuindo a mensagem Stack_OverFlow). :shock:

Alguma idéia? Alguém poderia sugerir onde eu estou errando??

Agradeço a atenção!

O

Ue! Mas você mesmo disse que era para setar -ss1000k!!!

E, por favor, leia a documentação que eu passei com detalhe: -Xms e -Xmx são parametros diferentes de -Xss

A

Mais uma vez, muito obrigado pela resposta oyama

O problema foi resolvido. Segue abaixo o trecho alterado:

<resources> <j2se version="1.5.0+" java-vm-args="-Xss1000k" href="http://java.sun.com/products/autodl/j2se"/> <jar href="aReconstrutor.jar" main="true" download="eager"/> <nativelib href="avtk.jar" /> </resources>

Realmente, eu fiz uma grande confusão, já que eu não sabia o que siginificava -ss1000k. Justamente por isso tentei usar outros valores. Agora, a aplicação roda perfeitamente, com o problema da memória resolvido. Muito obrigado mais uma vez.

Criado 4 de junho de 2008
Ultima resposta 5 de jun. de 2008
Respostas 4
Participantes 2