【问题标题】:Out of memory exception when extracting xmp metadata from picture从图片中提取 xmp 元数据时出现内存不足异常
【发布时间】:2011-07-19 14:24:26
【问题描述】:

从 tif 文件中提取元数据时,我遇到了上述问题。它的大小超过 450 MB。我在最新版本(0.97)中使用http://commons.apache.org/sanselan/ 库进行提取。当我执行代码时:

String xmpMeta = null; try { xmpMeta = Sanselan.getXmpXml(file); } catch ...

,我得到以下堆栈跟踪:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at org.apache.sanselan.common.byteSources.ByteSourceInputStream.readBlock(ByteSourceInputStream.java:65) at org.apache.sanselan.common.byteSources.ByteSourceInputStream.access$000(ByteSourceInputStream.java:24) at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheBlock.getNext(ByteSourceInputStream.java:54) at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheReadingInputStream.read(ByteSourceInputStream.java:147) ...

我不得不承认我正在增加我的 vm 的 Xms 和 Xmx 属性,它也失败了,但最后我对增加这个属性不感兴趣,因为我可以得到更重的图片来解析。我将不胜感激在这个问题上的帮助或引用另一个库来解析 JPEG / Tif 文件中的 xmp 元数据。

【问题讨论】:

  • 您只是想挤出元数据吗?还是您需要解析整个文件?如果是第二个,你将不得不增加你的记忆并且无法规避它。前面的情况有解决方案,我稍后再搜索,然后作为答案发布。
  • 您解决了这个问题吗?我正在做一个小宠物项目,我担心同样的事情,因为 Sanselan getXmpXml 只是将 Xmp XML 作为一个大字符串返回。在 MINIMUM 时,它将最终使用 Xmp XML 在图像中占用的相同空间量。我更喜欢 Sanselan 将我吐回我可以解析的 Stream...

标签: java tiff out-of-memory xmp


【解决方案1】:

你可以通过调用来调用具有更多堆空间的 java

java -Xmx512M FooProgramm

这将运行具有 512M 堆空间的 java。我知道这不是一个好的解决方案。

也许你可以试试这个例子:

http://www.example-code.com/java/java-xmp-extract.asp

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2014-07-23
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多