Изключение за липса на памет при извличане на xmp метаданни от картина

Имам проблем като споменатия по-горе при извличане на метаданни от tif файл. Има размер над 450 MB. Извличах с помощта на 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 файлове.


person JohnyB    schedule 21.03.2011    source източник
comment
просто искате да екструдирате метаданните? Или ще трябва да анализирате целия файл? Ако е второто, ще трябва да увеличите паметта си и не можете да го заобиколите. В по-ранния случай има решение, ще го потърся по-късно и тогава ще го публикувам като отговор.   -  person Angelo Fuchs    schedule 24.10.2011
comment
Решихте ли този проблем? Работя върху малък домашен любимец и се тревожа за същото, като се има предвид, че Sanselan getXmpXml просто връща Xmp XML като голям низ. при МИНИМУМ в крайна сметка ще използва същото количество пространство, което Xmp XML заема в изображението. Бих предпочел Санселан да ми върне поток, който мога да анализирам...   -  person Randyaa    schedule 23.03.2012


Отговори (1)


Ами можете да извикате java с повече пространство в купчина чрез извикване

java -Xmx512M FooProgramm

Това ще стартира Java с 512M Heap пространство. Знам, че това не е добро решение.

Може би можете да опитате нещо от тези примери:

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

person Jonny Schubert    schedule 22.12.2011