gpt4 book ai didi

java - BufferedImage 泄漏 - 是否有任何替代方案?

转载 作者:行者123 更新时间:2023-11-30 07:25:28 25 4
gpt4 key购买 nike

我在使用 BufferedImage 时遇到奇怪的问题,在某些情况下它会占用所有可用系统内存(3GB、1.5GB 可用内存)。

我创建了一个简单的包装器并像这样使用它:

public ImageWrapper(final byte[] bytes) throws ImageWrapperException {
this(new ByteArrayInputStream(bytes));
}



public ImageWrapper(final ByteArrayInputStream bis) throws ImageWrapperException {
try {
image = ImageIO.read(bis);
bis.close();
} catch (IOException e) {
throw new ImageWrapperException(e);
}
}

(我已经证实即使使用 image = ImageIO.read(file); 也会发生这种情况)

在第一个“无法分配内存”之前,我没有收到任何异常。

由于某些原因,当读取特定类型的图像时,图像的读取最终会消耗所有系统内存。我说的不是堆,而是系统内存。

它只发生在某些环境中 - 它不会发生在我的 OSX 上,但它会发生在我的 Debian 服务器上。

  1. 您知道为什么会发生这种情况吗?
  2. 是否有 BufferedImage 的替代品,可能效果更好?
  3. 有问题的机器是虚拟服务器。会不会是配置引起的?

谢谢

编辑:

  1. 示例图片:http://cl.ly/1P430l0V1g133r0C291J
  2. 这只是第一个也是唯一一个会产生这种情况的实例。
  3. 我刚刚验证它也发生在:image = ImageIO.read(file); - 我开始认为,它一定是 Java 之外的东西 - 一些本地库是 buggy ...

编辑2:

所以问题出在文件系统上——我有一个 7GB 的目录,里面有数千张图片。当我尝试读取文件时,它会占用所有内存——我想这是某种文件系统问题。

最佳答案

有一些与 ImageIO.read() 和 BufferedImage 相关的已知错误

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7166379

http://bugs.sun.com/view_bug.do?bug_id=6716560

关于java - BufferedImage 泄漏 - 是否有任何替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com