Por que copiar uma imagem grande para a área de transferência congelar um computador?
Às vezes, algo realmente estranho acontece quando usamos nossos computadores, o que não faz sentido algum… como copiar uma imagem simples para a área de transferência e o computador congelar por causa disso. Uma imagem é uma imagem, certo? O post do SuperUser de hoje tem a resposta para o dilema de um leitor intrigado.
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
Imagem original cortesia da Wikimedia.
A questão
O leitor do SuperUser Joban Dhillon quer saber por que copiar uma imagem para a área de transferência em seu computador a congela:
Eu estava brincando com algumas imagens do mapa de altura e encontrei esta:
(http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600×10800.jpg)
A imagem tem 21.600 * 10,800 pixels de tamanho. Quando clico com o botão direito do mouse e seleciono “Copy Image” no meu navegador (estou usando o Google Chrome), ele desacelera meu computador até que ele congele. Depois disso, devo reiniciar. Estou curioso sobre por que isso acontece. Eu presumo que é o tamanho da imagem, embora seja apenas cerca de 6 MB quando salvo no meu computador. Eu também estou usando o Windows 8.1
Por que uma simples imagem congelaria o computador de Joban depois de copiá-lo para a área de transferência??
A resposta
O contribuidor do SuperUser Mokubai tem a resposta para nós:
“Copiar Imagem” copia os dados da imagem bruta, em vez do próprio arquivo de imagem, para a área de transferência.
Os dados da imagem bruta serão 21.600 x 10.800 x 3 (imagem de 24 bits) = 699.840.000 bytes de dados. São aproximadamente 700 MB de dados que seu navegador está tentando copiar para a área de transferência.
O JPEG compacta os dados brutos usando um algoritmo com perdas e pode obter uma boa compactação. Daí o comprimido arquivo é de apenas 6 MB.
O motivo pelo qual o computador fica lento é que ele provavelmente está enchendo sua memória com pelo menos 700 MB de dados de imagem que seu navegador está usando para mostrar a imagem, outros 700 MB (juntamente com a sobrecarga que a área de transferência incorre) na área de transferência, e uma quantidade insignificante de poder de processamento para converter a imagem em um formato que pode ser armazenado na área de transferência.
É provável que, se você tiver menos de 4 GB de RAM física, essas cópias dos dados de imagem forçam o computador a enviar a memória da página para o arquivo de troca, na tentativa de atender às demandas de memória ao mesmo tempo. Isso fará com que os programas e o acesso ao disco fiquem lentos à medida que usam o disco e tentem usar os dados que podem ter sido apenas paginados.
Resumindo: Não use a área de transferência para imagens enormes, a menos que você tenha muita memória e pouquíssimo tempo.
Gosta de gráficos bonitos? É o que acontece quando eu carrego essa imagem no Google Chrome, depois copio para a área de transferência na minha máquina com 12 GB de RAM:
Começa no ponto mais baixo usando 2,8 GB de RAM, carregando a imagem até 3,6 GB (aproximadamente os 700 MB), copiando-a para os picos da área de transferência até 6,3 GB de RAM antes de voltar 4.5-ish você esperaria ver por um programa e duas cópias de uma imagem bastante grande.
Esse é um impressionante 3,7 GB de dados de imagem sendo trabalhados no pico, que é provavelmente a imagem inicial, uma quantidade reservada para a área de transferência e talvez alguns buffers de conversão. Isso é o suficiente para trazer qualquer máquina com menos de 8 GB de RAM para os joelhos.
Estranhamente, fazer a mesma coisa no Firefox apenas copia a imagem Arquivo em vez da imagem dados (sem a onda de memória assustadora).
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.