Навіщо копіювати велике зображення в буфер обміну, щоб заморозити комп'ютер?
Іноді при використанні наших комп'ютерів відбувається щось дуже дивне, що взагалі не має сенсу… наприклад, копіювання простого зображення в буфер обміну і зависання комп'ютера через це. Зображення - це зображення, чи не так? Сьогоднішня посада SuperUser має відповідь на дилему читача.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Зображення надано Wikimedia.
Питання
Читач SuperUser Joban Dhillon хоче знати, чому копіювання зображення в буфер обміну на його комп'ютері зависає:
Я мандрував з деякими зображеннями карти висоти і знайшов це:
(http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600Ч10800.jpg)
Розмір зображення становить 21 600 * 10 800 пікселів. Коли я натискаю правою кнопкою миші та вибираю "Копіювати зображення" у своєму веб-переглядачі (я використовую Google Chrome), він уповільнює роботу комп'ютера, поки він не зависає. Після цього я повинен перезапуститися. Мені цікаво, чому це відбувається. Я припускаю, що це розмір зображення, хоча це лише близько 6 Мб, коли він зберігається на моєму комп'ютері. Я також використовую Windows 8.1
Чому б простому зображенню заморозити комп'ютер Joban після копіювання його в буфер обміну?
Відповідь
Співробітник SuperUser Mokubai має відповідь для нас:
"Копіювати зображення" копіює необроблені дані зображення, а не сам файл зображення, у буфер обміну.
Сирі дані зображення становитимуть 21,600 x 10,800 x 3 (24-бітове зображення) = 699,840,000 байт даних. Це приблизно 700 Мб даних, які ваш браузер намагається скопіювати в буфер обміну.
JPEG стискає необроблені дані за допомогою алгоритму з втратами і може отримати дуже гарне стиснення. Звідси і стиснутий файл всього 6 Мб.
Причина, через яку ваш комп'ютер уповільнюється, полягає в тому, що, ймовірно, вона заповнює вашу пам'ять принаймні 700 Мб даних зображень, які використовує ваш веб-переглядач, щоб показати вам зображення, ще 700 Мб (разом з будь-якими накладними витратами буфера обміну) для зберігання в буфері обміну даними, а також незначна обсяг обчислювальної потужності для перетворення зображення у формат, який можна зберігати в буфері обміну.
Швидше за все, якщо у вас менше 4 ГБ фізичної пам'яті, ці копії даних зображення змушують комп'ютер виводити пам'ять до файлу підкачки, намагаючись одночасно виконати обидві вимоги до пам'яті. Це призведе до повільного доступу до програм і доступу до диска, оскільки вони використовують диск і намагаються використовувати дані, які, можливо, тільки що були виправлені.
Коротше кажучи: Не використовуйте буфер обміну для величезних зображень, якщо у вас є багато пам'яті і трохи часу, щоб заощадити.
Як красиві графіки? Це відбувається, коли я завантажую зображення в Google Chrome, а потім копію його в буфер обміну на моєму комп'ютері з 12 Гб оперативної пам'яті:
Вона починається в нижній точці за допомогою 2,8 ГБ оперативної пам'яті, завантажуючи зображення до 3,6 ГБ (приблизно 700 МБ), потім копіюючи її в буфер обміну шинами до 6,3 ГБ оперативної пам'яті перед тим, як відмовитися назад 4.5-ish ви очікували б побачити для програми і дві копії досить великого зображення.
Це величезні 3,7 ГБ даних зображень, що обробляються на піку, що, мабуть, є початковим зображенням, зарезервованою кількістю в буфері обміну і, можливо, кількома буферами перетворення. Цього достатньо для того, щоб кожен пристрій, що має менше 8 Гб оперативної пам'яті.
Дивно, що робити те ж саме в Firefox просто копіює зображення файл замість зображення даних (без страшного сплеску пам'яті).
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.