[RESOLVIDO] Problema ao carregar XML com o XPath. Especificamente ao carregar o Document

5 respostas
R
Olá pessoal, estou com um problema um tanto estranho e que não sei muito por onde começar a resolver. Fiz uma aplicação que lê um XML de tamanho razoável (em torno de 200 mb) através do XPath e salva em um banco. O que é estranho é que na maquina que desenvolvi a aplicação o sistema funciona bem, lê o arquivo normalmente e com uma velocidade muito boa, mas quando exporto essa aplicação para um jar executável, a aplicação para de ler o XML. Fiz algumas verificações e consegui identificar que a leitura para exatamente quando vou carregar o Document, e não responde mais, e também não apresenta nenhuma mensagem de erro. Já testei em diversas maquinas diferentes e com configurações semelhantes a da maquina que desenvolvi a aplicação e todas pararam no mesmo local. As versões do java instaladas nestas maquinas são as mesmas que utilizei no desenvolvimento, testei com maquinas 32 e 64 bits, maquinas com bastante memória Ram e capacidade de processamento e nenhuma funcionou. Se alguém tiver alguma ideia que possa indicar um caminho por onde devo procurar agradeço.
Document doc;
		
		DocumentBuilder builder;
		
		DocumentBuilderFactory domBuilder = DocumentBuilderFactory
				.newInstance();
		
		XPath xpath;

		try {
			// Constroi os objetos @DocumentBuilder e @Document
			builder = domBuilder.newDocumentBuilder();
			
			
			// Neste ponto que o sistema para, ja tentei passar um tipo File 
			// mas também não resolveu.
			
			doc = builder.parse("c:/ArqConf.Xml");

5 Respostas

Xmio

Já tentou aumentar a memória na chamada do seu jar?
Talvez a configuração que você esteja utilizando de memoria durante o desenvolvimento esteja diferente do default utilizado na chamada…

R

Como poderia aumentar a memória na chamada do jar? Nunca alterei na chamada, você tem alguma dica ou material que indique como fazer isso? Obrigado.

Xmio

Adicione os parametros na chamada do seu jar
-Xms256m -Xmx1024m
onde Xms é a memória inicial e Xms é a memória final.

E

Se um XML tem 200 MB e você vai carregá-lo inteiramente na memória, você precisa de pelo menos uns 500 MB de heap (-Xmx) para isso rodar direito, pelo que imagino. É que cada caracter de uma string ocupa 2 bytes, e também você precisa levar em conta overheads (como os objetos que são necessários para conter as strings).

R

Pessoal, mais uma vez obrigado pela ajuda, o problema era esse mesmo, tive que aumentar o espaço da memória para o Java (heap), e detalhe, da forma como esta, meu programa só ira funcionar em maquinas com java 64 bits que permitem alocação superior a 768mb, neste caso utilizei 2048mb em maquina que possui 4 Gb de Ram, como é uma aplicação que sera utilizada poucas vezes e por período curto de tempo deixei assim mesmo. Então mais uma vez obrigado.

Criado 27 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 5
Participantes 3