2013-10-10 4 views
1

Я пытаюсь создать mxgraph и изображение из созданного mxgraph в JAVA. Ниже приведен код для создания изображения из mxgraph.Jgraphx out of memory - Java

BufferedImage image = mxCellRenderer.createBufferedImage(graph, 
       null, 1, Color.WHITE, graphComponent.isAntiAlias(), null, 
       graphComponent.getCanvas()); 

// Creates the URL-encoded XML data 
mxCodec codec = new mxCodec(); 
String xml = URLEncoder.encode(mxXmlUtils.getXml(codec.encode(graph.getModel())), "UTF-8"); 
mxPngEncodeParam param = mxPngEncodeParam.getDefaultEncodeParam(image); 
param.setCompressedText(new String[] { "mxGraphModel", xml }); 

//Saves as a PNG file 
outputStream = new FileOutputStream(new File("graph.jpg")); 

ImageIO.write(image, "jpg", outputStream); 
outputStream.close(); 
image = null; 

Я использую иерархическую схему на графике.

Но я получаю ошибку из памяти при создании изображения для увеличения графика.

Как я могу избавиться от этой проблемы с памятью (кроме увеличения размера кучи)? Есть ли другой альтернативный способ решения этой проблемы (помимо увеличения размера кучи)?

+0

Может быть, вы смешиваете jpg vs png? – maiklos

+0

Я сохраняю изображение как jpg. Я тоже пытался с png. Тем не менее проблема возникает. – AJJ

ответ

1

Смотрите этот пост здесь:

http://forum.jgraph.com/questions/5408/save-as-png-detect-out-of-memory

особенно в нижней части. В JGraphX ​​есть чек, который определяет, достаточно ли памяти. Это неправильно. Может быть недостаточно памяти, поскольку GC еще не запущен. Если GC работает, тогда память будет освобождена, и метод createBufferedImage может быть успешным. Поэтому вместо проверки свободной памяти память должна была быть просто выделена в try {...} catch (Error err} {...}.