2013-10-10 44 views
1

我想从JAVA中创建的mxgraph创建mxgraph和图像。以下是从mxgraph创建图像的代码。Jgraphx内存不足 - 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和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} {...}块。