Uso de memória
18/03/2013 12:06
1
Olá,

Desenvolvo Java+jsf já algum tempo. Muitos me falaram sobre um tal de framework GRAILS, que era muito bom, desenvolvimento ágil, etc. Comecei a desenvolver um projeto no GRAILS, o qual me encantou muito, conseguindo muita agilidade em cadastros simples e complexos.

Porem quando já estava com boa parte de minha aplicação desenvolvida me deparei com um sério problema. Minha aplicação quando está em execução na máquina de desenvolvimento está utilizando 700mb de memória para mais, e quando implanto ela em meu servidor com Apache ela vai para 280mb para mais. O que para mim é um custo muito alto de memória para uma aplicação de cadastros, sem processamentos pesados.

Alguém poderia me ajudar com este problema? Existe alguma forma de eu reduzir este uso, fiz alguma coisa errada?
Tags: memória, servidor, memoria, espaco, uso


1
Oi Roger,

o consumo de memória vai variar bastante de acordo com a sua aplicação. No caso do Grails Brasil, por exemplo, ocupa algo em torno de uns 200, 300 Mb no servidor.

O custo no ambiente de desenvolvimento é mais alto mesmo, porque você vai ter um escaneamento do código fonte que vai refletir nas classes carregadas. Neste caso, é maior, o que fica claro na comparação entre o servidor de produção e seu ambiente de desenvolvimento.

No caso de consumo excessivo, é a mesma coisa que ocorre em uma aplicação Java normal: pode ser leak de memória (coisas que já deveriam ter sido desalocadas), cacheamento excessivo, classes de domínio lazy muito complexas, etc. Tem como você nos falar um pouco mais sobre seu projeto?

Uma ferramenta que me ajuda bastante é o Mission Control do JRockit. Mesmo que sua aplicação não vá executar nesta JVM, é um exercício interessnate iniciá-la pelo JRockit e analisar os leaks pelo Mission Control. Costuma identificar boa parte dos problemas nesta área.


0
Oi Henrique,

Acebei de fazer mais um teste aqui com uma aplicação vazia! Só fiz o create-app e gerei o war. Subi ela para meu servidor e o uso de memória com Tomcat está em torno de 200Mb. Muito estranho não acha?

Deve ter alguma coisa complicando?
18/03/2013 13:15


1
Por padrão, uma aplicação Grails vazia já vêm com o HSQLDB, que vai ser instanciado pelo seu projeto. Esta pode ser uma das causas do consumo de memória.

Mas este valor não está assim tão longe da realidade: normalmente vai ficar por isto mesmo. Leve em consideração que há alguns plugins padrão que vão ser carregados no seu projeto, como por exemplo o resources, gorm, etc.


1
Olá, Roger.

Amigo, venho trabalhando com Grails em produção e percebi esse alto consumo de memória desde o inicio mesmo.

A boa notícia é que essa quantidade aumenta bem pouco com o crescimento da aplicação. A não ser que entupa os escopos de sessão dos usuários com lixo. Assim, raramente vai precisar comprar muita memória para sua aplicação.

Estou num projeto que abriga no mesmo AS 2 projetos Grails e mais 1 feito em Spring com cerca de 1GB para a JVM e a memória tá aguentando numa boa.



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