Исключение нехватки памяти при извлечении метаданных xmp из картинки - PullRequest
2 голосов
/ 21 марта 2011

У меня проблема, подобная упомянутой выше, при извлечении метаданных из файла tif.Он имеет размер более 450 МБ.Я был извлечен с использованием http://commons.apache.org/sanselan/ библиотеки в новейшей версии (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 моего vm, и это также не удалось,но в конце я не заинтересован в увеличении этих свойств, потому что я могу получить более тяжелые картинки для разбора.Буду признателен за помощь в этом вопросе или за ссылку на другую библиотеку для анализа метаданных xmp из файлов JPEG / Tif.

1 Ответ

0 голосов
/ 22 декабря 2011

Ну, вы можете вызвать java с большим количеством кучи, вызвав

java -Xmx512M FooProgramm

Это запустит Java с 512M кучи.Я знаю, что это не очень хорошее решение.

Может быть, вы могли бы попробовать что-то из этих примеров:

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

...