Java - JDOM xml posible problema de tamaño en memoria?

 
Vista:
sin imagen de perfil

JDOM xml posible problema de tamaño en memoria?

Publicado por Felipe Rodriguez (6 intervenciones) el 30/12/2014 17:15:30
Hola, os cuento, a ver si me podéis explicar para tontos, estoy haciendo un respaldo a una base de datos que está hecha en MongoDb, como no tiene ninguna opción a través de java me estoy creando yo un xml de cada elemento de la base de datos.

Mi duda es si java almacena en memoria cada elemento hasta que se escribe a través del xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml")), porque si es así, ¿dependiendo del tamaño puede dar problemas no?

Gracias

Este es mi código:

table = db.getCollection("Pacientes");

BasicDBObject filtro = new BasicDBObject();

DBCursor cursor = table.find();

// Elementos para generar xml
Element Pacientes = new Element("Pacientes");
Document doc = new Document(Pacientes);

try {

while (cursor.hasNext()) {
DBObject cur = cursor.next();

String sName = (String)cur.get("Name");
String sFirstSecondName = (String)cur.get("FirstSecondName");
String sSecondSecondName = (String)cur.get("SecondSecondName");
String sDni = (String)cur.get("Dni");
String sBornDate = (String)cur.get("BornDate");
String sAdress = (String)cur.get("Adress");
String sPhoneFijo = (String)cur.get("PhoneFijo");
String sPhoneMovil = (String)cur.get("PhoneMovil");
String sDerivado = (String)cur.get("Derivado");
String sMotivoVisita = (String)cur.get("MotivoVisita");
String sComments = (String)cur.get("Comments");

Element Paciente = new Element("Paciente");

Paciente.addContent(new Element("Name").setText(sName));
Paciente.addContent(new Element("FirstSecondName").setText(sFirstSecondName));
Paciente.addContent(new Element("SecondSecondName").setText(sSecondSecondName));
Paciente.addContent(new Element("Dni").setText(sDni));
Paciente.addContent(new Element("BornDate").setText(sBornDate));
Paciente.addContent(new Element("Adress").setText(sAdress));
Paciente.addContent(new Element("PhoneFijo").setText(sPhoneFijo));
Paciente.addContent(new Element("PhoneMovil").setText(sPhoneMovil));
Paciente.addContent(new Element("Derivado").setText(sDerivado));
Paciente.addContent(new Element("MotivoVisita").setText(sMotivoVisita));
Paciente.addContent(new Element("Comments").setText(sComments));

doc.getRootElement().addContent(Paciente);


}
} finally {
try {
cursor.close();
mongoClient.close();

XMLOutputter xmlOutput = new XMLOutputter();

// display formato árbol
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml"));
} catch (IOException ex) {
Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
}


}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

JDOM xml posible problema de tamaño en memoria?

Publicado por Tom (1831 intervenciones) el 30/12/2014 18:10:19
Pues sí, java generalmente almacena todo en memoria :)
Y sí, la jvm te puede dar problemas si necesita más memoria de la que le asignas en los parámetros ...
Si el cursor de la BD no te da problemas, lo mejor es que vayas escribiendo cada registro, por ejemplo, en un fichero en formato csv.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JDOM xml posible problema de tamaño en memoria?

Publicado por Felipe Rodriguez (6 intervenciones) el 30/12/2014 18:19:33
Gracias Tom,
A ver si te entiendo, dices que en vez de guardarlo como xml, ¿lo almacene como csv? Luego para parsear cada documento es simple en java?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JDOM xml posible problema de tamaño en memoria?

Publicado por Tom (1831 intervenciones) el 31/12/2014 16:09:16
Es una posibilidad. La idea es ir volcando cada registro tras leerlo. Csv es fácil de interpretar en cualquier lenguaje.
También puedes generar y escribir xml, pero por registro, no todo el documento al final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JDOM xml posible problema de tamaño en memoria?

Publicado por Felipe Rodriguez (6 intervenciones) el 31/12/2014 16:45:19
Y lo del cursor a que te referías??
Thanks y feliz 2015!;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JDOM xml posible problema de tamaño en memoria?

Publicado por Tom (1831 intervenciones) el 01/01/2015 17:41:32
Pues que el cursor también puede necesitar más memoria, depende del gestor y del driver y tal ...

Pruébalo, simplemente sacando un mensaje por cada registro, sin hacer nada más.

=
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JDOM xml posible problema de tamaño en memoria?

Publicado por FELIPE (6 intervenciones) el 01/01/2015 17:44:06
Ok, muchos thanks.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar