我正试着在一个循环中创建很多pdf文件.
for(int i=0; i<10000; ++i){
PDDocument doc = PDDocument.load(inputstream);
PDPage page = doc.getPage(0);
PDPageContentStream content = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true);
content.beginText();
//what happens here?
PDFont font = PDType0Font.load(doc, Thread.currentThread().getContextClassLoader().getResourceAsStream("font/simsun.ttf") );
content.setFont(font, 10);
//...
doc.save(outstream);
doc.close();
}
拨打PDType0Font.load...
会发生什么情况?因为ttf文件很大(10M),它会创建font
个PDType0Font.load...
00次的短暂大对象吗?如果是这样的话,有没有办法让字体像PDType1Font一样嵌入,这样我就可以只加载一次,并在循环中多次使用它?
我在这里遇到了一个完整的GC问题,我正在努力解决它.