java - Jgraphx 内存不足 - Java

标签 java out-of-memory jgraphx

我正在尝试创建一个 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/

相关文章:

java - 我无法弄清楚我的变量从哪里调用或到哪里调用

SQLite 3 没有在 Golang 中释放内存

java - 具有初始顶点的 JGraphx 图形编辑器

java - 格式化 JGraphX 边

sql-server-2005 - 如何在不耗尽内存的情况下从磁盘读取大文件到数据库

java - 如何在 JGraphX 中创建具有可折叠节点的层次树

java - java中的事件处理和java中actionPerformed方法的执行

java - akka 是否提供对远程参与者之间网络连接的监控?

java - 从 servlet 内获取 Web 应用程序类路径

java - 捕获内存不足错误后如何执行命令/脚本?