IE附图(Image对象)显示内存溢出解决方案

用户在使用电子化扫描功能时,批量预览和缩放图片会导致IE浏览器内存不释放并逐渐增加。经过研究,发现是由于在生成缩放图后,图片资源未被正确释放。解决方案是通过创建新的Image对象来替换原有的,从而避免内存持续增加。调整后的代码实现了在频繁切换图片时,内存不再直线增加。
摘要由CSDN通过智能技术生成

     近期用户在大批量自动电子扫描电子附件并频繁预览缩放图片后,会出现内存不释放并逐步上升,最终影响到用户对功能的正常使用,而此问题是IE浏览器才会有此问题。个人查询了大量资料,但也没找到彻底的解决办法,貌似是IE自身的debug,不过最终经过自己各种实践验证,最终问题得以解决,现稍微总结分享供其他人遇到同类问题时,能找到属于合适的解决方式。

问题现象:

    附图上传后,图片因要按等比例缩放显示,每进行行图片第一次展示或切换时,会根据图片长宽重新预加载资源生成缩放图,但一经过预加载生成缩放图后,发现内存会较之前会不断增加,此问题只有IE浏览器才会发生。

解决方案:

    目前重新加载生成缩放图后会直接导致内存增加,并且在很长时间段得不到释放,其产生的原因是因为生成缩放图前需要把图片缓存到Image对象,然后原图片调整完长宽后会重新从Image对象读取SRC生成对应缩放图,而目前在IE版本下,采用此更新原图片的src方式,会发现该资源信息一直得不到释放(不管置Image对象为null或显示调用垃圾回收CollectGarbage()),但经过各种尝试及测试验证,最终发现采用如下重新生成原图片的新Image元素方式,在行图片实时加载及重新生成缩略图情况下,反复切换图片,其内存不会像之前一直直线增加(如下图所示--某一测试场景)。


代码片段:

     lodaImage.js中方法LoadImage方法,其调整前和调整后片段如下,当然像旋转缩放方法同类似;
调整后:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值