Jgraphx内存不足 - 的Java(Jgraphx out of memory - Java)

2019-10-18 18:36发布

我试图创建在Java中创建mxgraph的mxgraph和图像。 下面是从mxgraph创建图像的代码。

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;

我在图中使用分层布局。

但我正在逐渐对更大的图形创建图像的内存不足的错误。

我怎样才能摆脱这种记忆问题(除了增加堆大小)? 是否有(除了增加堆大小)解决该问题的任何其它替代方式是什么?

Answer 1:

在这里看到这个帖子:

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

特别是底部的一部分。 有一个在JGraphX检查确定是否有足够的内存。 这是错误的。 可能没有足够的内存,因为GC尚未运行。 如果GC运行,那么内存将被释放并createBufferedImage方法能够成功。 所以,不是检查空闲内存,内存应该刚刚在try {...}赶上(误差err分配} {...}块。



文章来源: Jgraphx out of memory - Java