从 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 元数据。