Ajuda com o heap space já tentei de tudo

6 respostas
G

Fala pessoal,

Eu estou fazendo um trabalho pra faculdade onde tenho que criar um site onde o usuário monta quantas playlists ele quiser e se uma música que ele queira não existir no sistema o usuário pode inserir a música no banco de dados. Eu sou obrigado a usar hibernate pela especificação do trabalho. Dito isso seguem abaixo os mapeamentos do hibernate:

User

<class name="org.usp.groove.core.User" table="tuser">
    <id name="codigo" column="uid">
        <generator class="increment"/>
    </id>
    <property name="nome"/>
<property name="email"/> 
<property name="senha"/> 

<set name="playlists" table="tplaylist">
	<key column="uid"/>
	<one-to-many class="org.usp.groove.core.Playlist"/>
</set>
</class>

Playlist

<class name="org.usp.groove.core.Playlist" table="tplaylist">
    <id name="codigo" column="pid">
        <generator class="increment"/>
    </id>
    <property name="nome" column="pnome"/>
<property name="userID" column="uid"/> 

<set name="songs" table="tplaysong" lazy="true">
	<key column="pid"/>
	<many-to-many column="sid" class="org.usp.groove.core.Song"/>
	
</set>
</class>

Song

<class name="org.usp.groove.core.Song" table="tsong">
    <id name="codigo" column="sid">
        <generator class="increment"/>
    </id>
    <property name="nome" column="snome"/>
	<property name="data" column="data" type="byte[]"/>
</class>
Eu tenho que utilizar servlets. O que acontece, na maioria das vezes da pau de heap space out of memory. Algumas vezes ele consegue executar, mas preciso corrigir esse pau.

Eu consegui isolar o erro no servlet da Playlist.Quando eu mando listar as músicas relacionadas à uma determinada plalist é que o erro ocorre, segue o código java

case 4://find

try{

Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();

session2.beginTransaction();

playlist = (Playlist)session2.load(Playlist.class, codigo);

System.out.println("Playlists = "+playlist.getSongs().size());

session2.getTransaction().commit();

saida = content.jsp;

session.setAttribute(playcontent,playlist);

}

catch(Exception e){

e.printStackTrace();

saida = “…/msg.jsp?msg=8;

}

finally{

HibernateUtil.getSessionFactory().close();

response.sendRedirect(saida);

}

break;

será que alguem tem alguma ideia?

valeu e abraços

6 Respostas

rogelgarcia

1 - Quantas músicas sua query tá retornando?
2 - Qual servidor você está utilizando?
3 - Já tentou aumentar o Heap Space? (Vi que vc já tentou de tudo… mas nao custa perguntar :D)

G

tentei arruma mas n deu certo nao, eu queria tenta arruma ela no arquivo build.xml do ant você sabe como fazer?

retorna 3 musicas

apache-tomcat 6.0.26

rogelgarcia

No build.xml num vai resolver nao…

Tem mais aplicacoes no seu tomcat…?

Se tiver, tente retirar essas aplicacoes…

No mais, parece que seu programa tá ok… a solução é aumentar a quantidade de memória mesmo…

Como vc tá iniciando o tomcat? Pela sua IDE ou .bat?

Passando como parametro para a JVM do servidor: -Xmx256m (ou quanto de memória vc precisar)

G

é por um .bat, tem bastante coisa sim, vou remover tudo.

Como que eu passo o parâmetro pelo arquivo .bat pra JVM do tomcat?

rogelgarcia

De acordo com essa documentacao http://www.chemaxon.com/jchem/doc/admin/tomcat.html

É setando o parametro numa variavel de ambiente CATALINA_OPTS

Mas testei aqui e num deu certo no meu nao…

Como eu uso o eclipse para iniciar o tomcat… nunca testei isso…

Uma outra vez… mudei o arquivo catalina.bat na mao… e adicionei o parametro… assim nao precisava mecher nas variaveis de ambiente…

G

mexi no catalina.bat e funcionou…valeu cara

Criado 19 de junho de 2010
Ultima resposta 19 de jun. de 2010
Respostas 6
Participantes 2