![将大图像存入剪贴板会导致计算机死机](https://linux22.com/image/1409384/%E5%B0%86%E5%A4%A7%E5%9B%BE%E5%83%8F%E5%AD%98%E5%85%A5%E5%89%AA%E8%B4%B4%E6%9D%BF%E4%BC%9A%E5%AF%BC%E8%87%B4%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AD%BB%E6%9C%BA.png)
所以我弄乱了一些高度图图像并发现了这个:
http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600x10800.jpg
这张图片的尺寸是 21600x10800,当我从浏览器(我使用的是 Chrome)右键单击“复制图片”时,它会减慢我的电脑速度,直到电脑死机。之后我必须重新启动。我很好奇为什么会发生这种情况,我猜是图片的大小问题,尽管保存时它只有大约 6mb。
我也在使用 Windows 8.1
答案1
“复制图像”是将原始图像数据(而不是图像文件本身)复制到剪贴板。
原始图像数据将为 21600 x 10800 x 3(24 位图像)= 699,840,000 字节数据。您的浏览器试图将大约 700MB 的数据存入剪贴板。
JPEG 使用有损算法压缩原始数据,可以获得相当好的压缩效果。因此压缩文件只有6MB。
它使您的计算机运行缓慢的原因是,它可能至少用浏览器用于显示图像的 700MB 图像数据填满了您的内存,另外还有 700MB(以及剪贴板产生的任何开销)用于将其存储在剪贴板上,以及需要相当多的处理能力来将图像转换为可以存储在剪贴板上的格式。
如果您的物理 RAM 少于 4GB 或更少,则这些图像数据副本可能会迫使您的计算机将内存分页到交换文件,以试图同时满足两个内存需求。这将导致程序和磁盘访问变得缓慢,因为它们使用磁盘并尝试使用可能刚刚分页的数据。
简而言之:除非您有大量内存和一些空闲时间,否则不要使用剪贴板来处理大图像。
喜欢漂亮的图表吗?当我在 Chrome 中加载该图像,然后将其复制到具有 12GB RAM 的机器上的剪贴板时,会发生以下情况:
它一开始使用 2.8GB 的 RAM,加载图像时会占用 3.6GB(大约 700MB),然后将其复制到剪贴板时会占用 6.3GB 的 RAM,最后又稳定在 4.5GB 左右,这是对于一个程序和两份相当大的图像而言的。
在高峰期,需要处理的图像数据高达 3.7GB,这可能是初始图像、剪贴板的保留量以及可能的一些转换缓冲区。这足以让任何 RAM 不足 8GB 的机器瘫痪。
奇怪的是,在 Firefox 中执行同样操作只会复制图像文件而不是图像数据没有可怕的记忆激增。