[Struts 1] DynaActionForm consumindo muita memória

Ola pessoal,

Estou tendo problemas com DynaActionFrom do Struts 1.3.5…

Usei o MessAdmin e obtive os dados abaixo:

Attribute size ----- Attribute name ----------------------------------------- Attribute value
75.12 KB ------------- voSessao.2430c191b063014faa760f7c45cfb833----- …VoSessao@a594e1
48 B ------------------ isRequisitosVerificados -------------------------------- true
25.61 MB ------------- EntradaSaldoConsolidado ---------------------------- DynaActionForm[dynaClass=EntradaSaldoConsolidado,codigoGrupo=]
156 B ----------------- org.apache.struts.action.LOCALE -------------------- pt_BR

Alguém que já tenha passado por isso saberia como resolver?
Para cada novo DynaActionForm o anterior não está sendo removido…

Olá,

O DynaAction consome muita memoria mesmo, o ideal é “Apreciar com Moderação”, principalmente se você esta usando para fazer telas Grid com muitos registros, com edição de varios campos. No meu caso aqui, reduzi o numero de telas com grid usando DynaAction e onde eu ainda utilizo trabalho com vector na session, ao sair do programa faço a remoção do Vector imediatamente da Session. Consegui reduzir significativamente o consumo de memoria no meu sistema aqui.

O problema aqui é que todos os DynaAction são criados com o mesmo tamanho e com pelo menos 23mb…

Olha só o estado da memória agora:

Attribute size ----- Attribute name -------------- Attribute value
26.41 MB ---------- EntradaPendente ----------- DynaActionForm[dynaClass=EntradaPendent … tipoConsulta=]
48 B --------------- isRequisitosVerificados ----- true
26.41 MB ---------- Entrada852i04 -------------- DynaActionForm[dynaClass=Entr … =,ramal=,valorReceita=]
26.41 MB ---------- EntradaSaldoConsolidado - DynaActionForm[dynaClass=EntradaSaldoConsolidado,codigoGrupo=]
70.57 KB ---------- voSessao.7d92735b ------- VoSessao@15390b7
156 B -------------- LOCALE ---------------------- pt_BR

Estranho isso, o numero de registro com os quais você popula o dynaaction é igual ? Você esta setando na session ?

É o DynaAction que o Struts cria…
Todos saem com o mesmo tamanho…
Tô pensando que tem a ver com um extends…
todas estendem uma outra classe… deve ter algum objeto gigante lá…

O problema é que os objetos não somem da memoria…

Certo, com certeza tem algo sim, objetos do mesmo tamanho. Sem visualizar o contexto em que se aplica estas classes fica é meio sem jeito de opinar.

Você tem que fazer um Reset no Map do DynaAction, quando não for usar mais ele, pelo que entendi o Objeto do DynaAction perdura na memoria se não for marcado para que o GC remova ele.

Veja estes links:

http://www.junlu.com/msg/221181.html

http://struts.apache.org/1.1/api/org/apache/struts/action/DynaActionForm.html#reset(org.apache.struts.action.ActionMapping,%20javax.servlet.ServletRequest)

http://struts.apache.org/1.1/api/org/apache/struts/action/DynaActionForm.html

http://www.google.com.br/#hl=pt-BR&source=hp&q=How+to+clear+DynaAction&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=de9517c7db49970a

Obrigado cara, vou dar uma olhada…