我正在尝试创建一个 mxgraph 以及从 JAVA 中创建的 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;
我在图中使用分层布局。
但是在为较大的图形创建图像时出现内存不足错误。
如何解决这个内存问题(除了增加堆大小之外)? 有没有其他替代方法来解决这个问题(除了增加堆大小之外)?
最佳答案
在这里查看这篇文章:
http://forum.jgraph.com/questions/5408/save-as-png-detect-out-of-memory
尤其是底部。 JGraphX 中有一个检查来确定是否有足够的内存。那是错误的。可能内存不足,因为 GC 尚未运行。如果 GC 运行,则内存将被释放,并且 createBufferedImage 方法可能会成功。因此,不应检查空闲内存,而应在 try { ... } catch( Error err} { ... } block 中分配内存。
关于java - Jgraphx 内存不足 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19295127/