从图片中提取xmp元数据时出现内存不足异常

时间:2011-03-21 10:57:42

标签: java tiff out-of-memory xmp

从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)
...

我必须承认我正在增加我的虚拟机的Xms和Xmx属性并且它也失败了,但最后我对增加这些属性不感兴趣因为我可以得到更重的图片来解析。我将非常感谢您在此问题中提供帮助或引用另一个库来解析JPEG / Tif文件中的xmp元数据。

1 个答案:

答案 0 :(得分:0)

你可以通过调用

来调用带有更多堆空间的java
java -Xmx512M FooProgramm

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

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

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