【发布时间】:2017-04-08 01:33:25
【问题描述】:
我们正在尝试使用 PDFRenderer 的方法 renderImageWithDPI 渲染来自不同 PDF 文件的图像。在特定的 PDF 中,对于某些页面,库渲染器具有不同的行为。
渲染本身比其他类似页面花费更长的时间,并且内存消耗达到异常大的值:进程消耗的内存每 1 到 2 秒增加大约 50MB,直到达到消耗 5GB RAM 的值在 renderImageWithDPI 中由应用程序处理。一旦线程完成 renderImageWithDPI,内存消耗几乎立即下降 1.5 - 2 GB。由于内存消耗高,有时会抛出 Java Heap Space Exception。
发生这种情况的页面与其他页面没有明显不同,具有相同的宽度、高度和磁盘大小。渲染以 250 DPI 完成,使用 图像类型 RGB。此外,应用程序使用“-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider”参数运行。
这是内存泄漏还是预期行为?另外,有人能解释一下为什么有些页面会占用 2GB 内存并需要 1 分钟才能呈现,而另一些页面会在几秒钟内呈现出来?
【问题讨论】:
-
你能分享有问题的pdf吗?
-
你能给我你的电子邮件地址,以便我给你发送一个谷歌驱动器链接吗?
-
可能是阴影,也可能是复杂的图案...请将链接也发送给 snafu dot de 的 tilman。
-
@Cristian 你可以在这里点击我的名字找到一个地址,mkl@... 但也可以发送给 Tilman,他是一个活跃的 pdfbox 开发者。
-
您使用的是最新版本(2.0.5)吗?
标签: java pdfbox pdfrenderer