Java Spring集成PSPDFKit出现内存泄漏致应用崩溃求助
PSPDFKit内存泄漏排查求助:批量处理PDF后内存占用过高导致崩溃
问题现象
- 不使用PSPDFKit直接操作文档时,内存表现完全正常
- 仅在使用PSPDFKit库处理PDF时出现内存泄漏:批量渲染大量PDF文件后,内存占用飙升至2GB,最终导致应用崩溃
- 初步推测问题出在与PSPDFKit的交互实现逻辑上
相关代码实现
核心处理方法
public byte[] annotate(byte[] doc) throws Exception { ByteArrayProvider pdfProvider = new ByteArrayProvider(doc); PdfDocument document = PdfDocument.open(pdfProvider); document.saveAs(inMemoryDataProvider, new DocumentSaveOptions.Builder().flattenAnnotations(true).forceSave(true).build()); byte[] pdf = inMemoryDataProvider.read(inMemoryDataProvider.getSize(), 0); pdfProvider.release(); inMemoryDataProvider.release(); pdfProvider = null; return pdf; }
ByteArrayProvider类
public class ByteArrayProvider extends InputStreamDataProvider implements WritableDataProvider { private List<Byte> pdfData = new ArrayList<>(); ByteArrayProvider(@NotNull final byte[] data) { this.release(); for (byte value : data) { pdfData.add(value); } } @Override public void release() { pdfData.clear(); } }
InMemoryDataProvider类
public class InMemoryDataProvider implements WritableDataProvider { private final List<Byte> pdfData = new ArrayList<>(); @Override public void release() { pdfData.clear(); } }
恳请各位技术同仁帮忙排查问题,万分感谢!
内容的提问来源于stack exchange,提问作者Rakan Alfantoukh
相关产品推荐
相关产品推荐

