PDDocument document = PDDocument.load(file.getInputStream(), MemoryUsageSetting.setupTempFileOnly()
public static PDDocument load(InputStream input) throws IOException {
return load((InputStream)input, "", (InputStream)null, (String)null, MemoryUsageSetting.setupMainMemoryOnly());
public static PDDocument load(InputStream input, MemoryUsageSetting memUsageSetting) throws IOException {
return load((InputStream)input, "", (InputStream)null, (String)null, memUsageSetting);
try (PDDocument document = PDDocument.load(file.getInputStream(), MemoryUsageSetting.setupTempFileOnly()
PDFRenderer pdfRenderer = new PDFRenderer(document);
//允许下采样
pdfRenderer.setSubsamplingAllowed(true);
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, dpi, ImageType.RGB);
nohup java -jar -Xms128m -Xmx512m
nohup java -jar -Xms1g -Xmx2g
解决方案重写继承 DefaultResourceCache类的put方法不做任何处理
@Override
public void put(COSObject indirect, PDXObject xobject) throws IOException {
xobjects.put(indirect, new SoftReference<PDXObject>(xobject));
// 释放资源
bim.flush();
document.close();
pdf转图片上传oss预览
使用PDFBox将超过80页的PDF文件转图片时,会占用很多的内存,期间还执行多次垃圾回收但是没啥子用。最近使用pdfbox 导入发现内存使用占用特别高,通过查阅官方资料发现pdfbox 在处理一些复杂的pdf 消耗内存特别高,这个是没法避免的,内存设置小的很有可能导致内存溢出。但它提供了一些可以减少内存使用的方案。具体代码就不写了,我从几个维度罗列一下。给大家使用pdfbox 后期做优化参考。这个默认使用的软引用如图:软引用是在内存即将溢出才会回收,所以也会生命周期会一直占用内存。
我正在尝试使用PDFBox将pdf文件的第一页转换为图像。 当我加载一个大的pdf文件时,我得到一个例外。码:PDDocument doc;try {InputStream input = new URL("http://www.jewishfederations.org/local_includes/downloads/39497.pdf").openStream();doc = PDDoc...
版本基于2.0.27最近使用pdfbx 导入发现内存使用占用特别高,通过查阅官方资料发现pdfbox 在处理一些复杂的pdf 消耗内存特别高,这个是没法避免的,内存设置小的很有可能导致内存溢出。但它提供了一些可以减少内存使用的方案。具体代码就不写了,我从几个维度罗列一下。给大家使用pdfbox 后期做优化参考。这个默认使用的软引用如图:软引用是在内存即将溢出才会回收,所以也会生命周期会一直占用内存咱们自定义不需要实现即可或者使用虚引用。
我们正在尝试使用PDFRenderer的方法renderImageWithDPI渲染来自不同PDF文件的图像。在特定的PDF上,对于某些页面,库渲染器具有不同的行为。PDFBox 2不寻常的内存消耗渲染本身比其他类似页面花费的时间更长,并且内存消耗达到非常大的值:进程消耗的内存每1到2秒增加约50MB,直到达到像5GB内存在renderImageWithDPI中由应用程序进程占用。一旦线程完成re...
公司里上了个项目,发现了pdfbox每次生成文件都大概要占用50m的内存,公司的云服务器成本控制只有8G,跑了一个小集群-nginx+tomcat为了保证业务稳定性的同时说一下有关于内存泄漏和读写文件加快速度的解决方案
1.jvm
首先是docker tomcat的jvm堆优化 打开tomcat的Catalina.sh
JAVA_OPTS="-XX:+UseParallelGC
-XX:+UseParallelOldGC
-Xms512m
-Xmx1536m
-XX:NewSize=256m