我试图仅从许多不同的结构中提取文本(rtf doc pdf)。我自然转向Apache Tika,因为它可以自动检测文档并相应地提取文本。我只对文本感兴趣而不是格式化等。
我的应用程序最终导致大量内存泄漏,并且在调查它时,这来自PDFBox依赖项中的PDFFont类缓存。我没有兴趣从pdf缓存Fontmetrics和其他字体格式问题,因为我只想提取文本。
我正在使用tika 1.12。有谁知道如何解决这个问题。这就是我使用Autodetect的方式:
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File(child.getPath()));
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);
String s=null;
s =handler.toString();
handler=null;
context=null;
inputstream.close();
PDFont.clearResources();
答案 0 :(得分:0)
所以我捏造了一种解决方法,每次文件处理完毕后都会调用System.gc();
,这样可以很好地回答这个问题。但