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

Java 从图片中提取xmp元数据时出现内存不足异常,java,tiff,out-of-memory,xmp,Java,Tiff,Out Of Memory,Xmp,我在从tif文件提取元数据时遇到了如上所述的问题。它的大小超过450MB。我正在使用最新版本(0.97)中的库进行解压缩。当我执行代码时: String xmpMeta = null; try { xmpMeta = Sanselan.getXmpXml(file); } catch ... ,我得到以下堆栈跟踪: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at or

我在从tif文件提取元数据时遇到了如上所述的问题。它的大小超过450MB。我正在使用最新版本(0.97)中的库进行解压缩。当我执行代码时:


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元数据,我将不胜感激。

您可以通过调用

java -Xmx512M FooProgramm
这将使用512M堆空间运行java。我知道这不是一个好的解决办法

也许你可以从下面的例子中尝试一些东西:


您可以通过调用

java -Xmx512M FooProgramm
这将使用512M堆空间运行java。我知道这不是一个好的解决办法

也许你可以从下面的例子中尝试一些东西:


是否只想挤出元数据?还是需要解析整个文件?如果是第二种情况,你将不得不增加你的记忆力,而不能回避它。在前面的案例中,有一个解决方案,我稍后会搜索它并将其作为答案发布。您解决了这个问题吗?我正在做一个小项目,我也担心同样的事情,因为Sanselan getXmpXml只是将Xmp XML作为一个大字符串返回。至少,它将使用与Xmp XML在图像中占用的空间相同的空间量。我更喜欢Sanselan把我吐回一个我可以解析的流…你只是想挤出元数据吗?还是需要解析整个文件?如果是第二种情况,你将不得不增加你的记忆力,而不能回避它。在前面的案例中,有一个解决方案,我稍后会搜索它并将其作为答案发布。您解决了这个问题吗?我正在做一个小项目,我也担心同样的事情,因为Sanselan getXmpXml只是将Xmp XML作为一个大字符串返回。至少,它将使用与Xmp XML在图像中占用的空间相同的空间量。我更喜欢Sanselan把我吐回我能解析的小溪。。。