Erro ao editar registro usando mysql
01/02/2013 00:33
0
To com um banco de dados mysql com um pouco mais de 13.000 registros. Eu estou inserindo dados através de um outro programa java e uso o aplicativo grails somente para consultar e ou editar registros. Com poucos registros estava funcionando muito bem. Porém quando vou editar os registros agora com mais de 13000 registro eu pego o seguinte erro:
Error details

Error 500: Error creating bean with name 'gerdoc.DocumentoController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gerdoc.DocumentoController]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space
Servlet: grails
URI: /Gerdoc/grails/documento/update.dispatch
Exception Message: Java heap space
Caused by: Error creating bean with name 'gerdoc.DocumentoController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gerdoc.DocumentoController]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space
Class: Unknown
At Line: [-1]


Stack trace

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gerdoc.DocumentoController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gerdoc.DocumentoController]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space

at java.lang.Thread.run(Thread.java:680)

Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gerdoc.DocumentoController]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space

... 1 more

Caused by: java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOf(Arrays.java:2882)

at java.lang.StringValue.from(StringValue.java:24)

at java.lang.String.<init>(String.java:178)

at com.mysql.jdbc.SingleByteCharsetConverter.toString(SingleByteCharsetConverter.java:335)

at com.mysql.jdbc.ResultSetRow.getString(ResultSetRow.java:819)

at com.mysql.jdbc.BufferRow.getString(BufferRow.java:542)

at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5815)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5692)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5732)



Obs. to usando um form criado pelo scaffold.

Alguem poderia me ajudar
Tags: Editar mysql


1
O problema n e de grails nem java.
java.lang.OutOfMemoryError: Java heap space

Solução e explicação nesse link
http://javarevisited.blogspot.com.br/2011/09/javalangoutofmemoryerror-permgen-space.html
Resumo
Falta de memora no JVM


0
com 13000 registros seria melhor paginar essa consulta

voce tem a necessidade de trazer todos os registros de uma vez?

senao quando vc tacar isso na pagina, nao vai nem abrir
01/02/2013 12:34


0
eu sou novato em grails. Eu uso o método

Documento.getAll().texto

para indexar palavras no lucene.

Para a consulta eu uso o findAllByXXXXIlike, então acho que não recupero todos os 13000 registros. Mas o erro dava quando após uma consulta eu tentava editar o registro.

Realmente foi um erro de espaço em memória. quando liberei mais espaço o erro não aconteceu... mas eu achei estranho porque 13000 registro é muito pouco. O sistema caminha para ter dentro em breve 130.000 e daew. será que é proporcinal?

Alguem poderia me esclarecer o porque precisei aumentar a memória do JVM para tão poucos registros?
01/02/2013 16:16


0
"Alguem poderia me esclarecer o porque precisei aumentar a memória do JVM para tão poucos registros?"
Depende do que há nos registros. Campos BLOB e afins são consumidores de recursos computacionais.
E depende se você tem relações não lazy, o que transformaria 13 mil em muito mais em tempo de execução.


0
Meu tipo de dado

package mydoc

class Documento {

String tipo
String subtipo
String livro
String folha
Date data
String keywords
String texto
String cidade
String path
static hasMany = [partes:Parte]

static constraints = {
tipo blank: false, maxSize: 100
subtipo blank: false, maxSize: 100
tipo(inList: ["T1","T2","T3", "T4"])
keywords(nullable:true, maxSize:2000)
texto(nullable:true, maxSize:32768)
partes(nullable:true)
}

static mapping = {
keywords(maxLength:2000)
texto(maxLength:32768)
}

}


Tem algo estranho?
01/02/2013 17:28


0
Fabiano fazendo isso :

Documento.getAll().texto 


Se não me engano você tem uma lista com os 13000 textos, não sei se é exatamente isso que fez precisar de mais memória, mas se você paginar não terá problemas.


// 10 books from Dan Brown staring from 5th book ordered by release date
Book.findAll("from Book as b where b.author=? order by b.releaseDate",
['Dan Brown'], [max: 10, offset: 5])


findAll() na Documentação do Grails.
01/02/2013 19:30


0
Eu uso o:

Documento.getAll().texto

Para pegar os 13.000 textos e indexar palavra por palavra ao Lucene
gostaria de saber se com o

Book.findAll("from Book as b where b.author=? order by b.releaseDate",
['Dan Brown'], [max: 10, offset: 5])

posso fazer isso também?
01/02/2013 20:22



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto