Foros del Web » Programación para mayores de 30 ;) » Java »

Como liberar paulatinamente Memoria con Hibernate

Estas en el tema de Como liberar paulatinamente Memoria con Hibernate en el foro de Java en Foros del Web. Hola tengo una consulta yo utilizo Hibernate como Persistencia de datos, y tengo un formulario que lo tengo como un reporte que es extenso cargado ...
  #1 (permalink)  
Antiguo 21/02/2013, 12:54
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 6
Pregunta Como liberar paulatinamente Memoria con Hibernate

Hola tengo una consulta yo utilizo Hibernate como Persistencia de datos, y tengo un formulario que lo tengo como un reporte que es extenso cargado en el jsp, pero parece ser que me cae las ultimas cargas de la ultima tabla a cargar, ya me esta dando este error:

The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

He escuchado que hay una manera de liberar paulitamente memoria cada transaccion, justamente queria implementarlo porque cada carga de datos de una tablas ejecuta data transaccional y ahi el problema, les muestro cuantos beans hago referencia a que llamo mi consulta que esta referenciando a cada tabla de consulta (es que sucede que hay un subdetalle muy extenso).

Código:
private PamFichaPasivo beansFic;
    private PamSituacionAmbiental beansSit;
    private PamActividad beansAct;
    private ComFicha beans;
    private PamArchivosAdjuntos beansAdj;
    private PamAccesibilidad beansAcc;
    private PamClimaMetereologia beansCli;
    private PamCalidadAire beansAire;
    private PamGeomorfologiaSismicidad beansGeo;
    private PamHidrologia beansHid;
    private PamHidrologiaTipoCuerpo beansHidTipRio;   
    private PamDetalleBofedal beansBof05;
    private PamCaracterizacionEdafica beansEda;
    private PamCalidadSuelo beansSue;
    private PamEvaluacionPaisaje beansPai;
    private PamBiologicoEcologia beansEco;
    private PamBiologicoFlora beansFlo;
    private PamBiologicoFauna beansFau;
    private PamBiologicoAreaProtegida beansArea;
    private PamDetalleSocioEconomico beansSoc;
Tambien les muestro como cargo una tabla de un detalle:

Código:
PamFichaPasivo ficha = new PamFichaPasivo();
        beansFic = new PamFichaPasivo();
        ficha.setIdProvincia(getUsuario().getId_prvncia());
        idFicha = Long.valueOf(getRequest().getParameter("idFicha"));
        ficha.setCodigo(idFicha);
        beansFic = (PamFichaPasivo) getGenericService().findById(PamFichaPasivo.class, ficha);
  #2 (permalink)  
Antiguo 21/02/2013, 13:00
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: Como liberar paulatinamente Memoria con Hibernate

Ya me acuerdo, se llama session.flush(), alguien tiene una idea como utilizarlo....
  #3 (permalink)  
Antiguo 21/02/2013, 13:09
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Como liberar paulatinamente Memoria con Hibernate

Lo que hace session.flush() es sincronizar el estado de los objetos que tiene hibernate en memoria con los que hay en base de datos.

Después de hacer eso deberías hacer session.clear()
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 21/02/2013, 14:11
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Como liberar paulatinamente Memoria con Hibernate

El error que te está dando

The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

me hace pensar que es más problema de que tienes un jsp con muchas líneas de código (mas de 64 Kbytes) que problema de memoria ( 64 Kbytes es una porquería de memoria comparado con las Gigas que tiene ahora cualquier PC y las Megas que se le dan a la máquina virtual java por defecto).

Si tu jsp es muy largo, prueba a hacer clases con el código separado del jsp.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 21/02/2013, 15:08
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Como liberar paulatinamente Memoria con Hibernate

Lo que dice Chuidiang es cierto, tu JSP es demasiado grande.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 21/02/2013, 16:06
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: Como liberar paulatinamente Memoria con Hibernate

Asi es grande, pero es como un reporte en HTML que se va imprimir directo ....
  #7 (permalink)  
Antiguo 21/02/2013, 23:48
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Como liberar paulatinamente Memoria con Hibernate

Hola:

Lo que no puede ser grande es el código jsp, no el resultado html que luego muestra el navegador. Me explico, si es un reporte, puede haber algo como esto

Código java:
Ver original
  1. <% for (int i=0;i<100000;i++) {
  2.    out.println ("<p>esta es la linea "+i+"</p>");
  3. } %>

son tres líneas de jsp que producirán 100000 párrafos HTML que iran al navegador. Esto no te daría ese problema, puesto que lo que tiene un límite de 65 K es el código jsp.
En cualquier caso, por mucho código JSP que tengas, siempre puedes hacer clases para separar. El caso anterior es muy tonto, pero puedes reducir aun más si haces una clase asi

Código java:
Ver original
  1. public class GeneradorHTML {
  2.    public static String dameHTML() {
  3.         String texto="";
  4.          for (int i=0;i<100000;i++) {
  5.               texto+="<p>esta es la linea "+i+"</p>";
  6.          }
  7.          return texto;
  8.    }
  9. }

y en tu jsp pones

Código java:
Ver original
  1. <%= GeneradorHTML.dameHTML() %>

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: formulario, hibernate, jsp, liberar, memoria, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:18.