BufferedImage真的有人用么?怎样防止内存溢出严重?

shengli_liao shengli_liao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
因为系统涉及到比较多的图形处理,而且重绘比较频繁,所以想在图形方面做些比较深入的工作。关于双

缓存,以前也早有听说,只是一直没怎么用,因为总听说JavaGui很多组建已经在内部实现了双缓存。当然GUi

内部是否实现了双缓冲,我没有仔细研究,只是我在自己的系统中绘图时发现,自己没实现双缓冲,画面并不

闪烁,只是稍微有点慢。基于这种原因,前几天我将所有图像采用了缓冲技术,绘制背景的具体代码如下:
BufferedImage offImg;
if (offImg == null
|| offImg.getWidth() != d.width
|| offImg.getHeight() != d.height){
offImg = null;
offImg = new BufferedImage(
d.width, d.height, BufferedImage.TYPE_INT_RGB);
Graphics g2 = offImg.getGraphics();
g2.setColor(bgColor);
g2.fillRect(0,0,d.width,d.height);

drawBack(g2);
if (drawGrid)
drawBackGrid(g2);
}

Graphics g = this.getGraphics();
g.drawImage(offImg,0,0,d.width,d.height,null);

这样的话,每次图片重绘时,只是将BufferedImage复制到目标面板,经过测试,速度确实快了一点,但是

面板重绘一次至少要增加2M内容,刷新10多次,内存就溢出了。如果不用BufferedImage,而是直接在组件上绘

图,就没有内存溢出的问题,仔细查看程序,发现唯一可能浪费内存的地方只有图形复制方法g.drawImage

(offImg,0,0,d.width,d.height,null);
不知道大家有没有真的用过BufferedImage,如果用过是否也遇上了内存溢出的问题,应该如何解决呢?
...全文

相关推荐

BufferedImage使用—-生成一张验证码图片

BufferedImage—-生成一张验证码图片 最近看了一下BufferedImage类的使用,感觉挺好玩的,BuferedImage类是Image这个抽象类的实现类,作为一个带缓冲区(Buffered,看这个单词好像就是缓冲的意思吧)图像类,主要是在内存中生成一个供图片操作的缓冲区,利用这个缓冲区我们可以很好的对图片进行描绘,缩放等操作 话不多说开始实现 在绘画验证码图片之前我们需要一个String类型的随机字符串来作为验证码图片的文字信息,这里用到了Random类来实现字符串的随机生成 /** * 随机生成一个由大小写字母组成的长为length的字符串 * * @param

weixin_38508821

Java四种引用类型详解:从内存管理到实战应用

在Java内存管理中,垃圾回收机制是确保应用稳定性的核心技术。其核心原理是通过可达性分析算法判断对象是否存活,从而决定是否回收。理解不同引用类型的技术价值在于实现精细化内存控制,避免内存泄漏并优化性能。软引用适用于内存敏感缓存,能在内存不足时自动释放;弱引用适合构建非强制关联,如监听器容器;虚引用则提供对象回收后的精准通知机制,常用于堆外资源清理。这些引用类型在缓存设计、事件监听、资源管理等应用场景中发挥着关键作用,是构建健壮高效Java系统的必备知识。

weixin_30572613

java对图片改变大小,png防止变黑,加圆角 圆角外透明

java对图片改变大小,png防止变黑,加圆角 圆角外透明

zemel

《Java 文件格式转换神器:一行代码搞定 BufferedImage、MultipartFile、InputStream 互转!》

在 Java 开发中,文件格式转换是一个高频需求场景,尤其是在涉及图像处理、文件上传下载等功能时。本资源提供的FileFormatUtil工具类,正是为解决这一痛点而生的实用神器! 该工具类集成了五大核心转换功能: BufferedImage 转 InputStream:通过bufferedImageToInputStream方法,可将内存中的图像对象无缝转换为输入流,为后续的网络传输或文件存储提供便利。 File 转 MultipartFile:fileToMultipartFile方法支持将本地文件快速封装为 Spring 框架中的 MultipartFile 对象,轻松适配文件上传接口。 BufferedImage 转 File:提供两种重载实现,既可以将图像保存到指定路径,也能生成带格式的临时文件,满足不同场景需求。 MultipartFile 转 File:通过multipartFileToFile方法,可将上传的文件对象转换为本地文件,便于后续处理。 代码设计亮点: 1.异常处理完善:所有 IO 操作均包含异常捕获,确保程序健壮性 2. 资源管理安全:使用 try-with-resources 模式自动关闭流,避免内存泄漏 3. 临时文件自动清理:通过 deleteOnExit () 机制防止垃圾文件堆积 4. 线程安全设计:所有方法均为静态工具方法,无状态设计支持多线程调用 典型应用场景: 图片处理服务:格式转换、水印添加、尺寸调整 文件上传功能:表单提交文件的预处理 缓存优化:将频繁访问的图像转为流对象缓存 微服务集成:在服务间传递二进制文件数据

游戏人生的NPC

Java web实现动态图片验证码的示例代码

主要介绍了Java web实现动态图片验证码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38503496
评论 13
收藏 已收藏
分享
返回顶部
shengli_liao
Java SE 62,621 成员 307,251 内容