Перейти к содержимому
pdftools.kz
Организация

Вкладка сама перезагрузилась на середине работы

Вкладку выгрузила операционная система: процесс запросил больше памяти, чем ему разрешено, и его сняли целиком. Первое, что важно знать, — ваш исходный файл цел. Его только читали, ни одна операция не пишет поверх оригинала, и никуда он не отправлялся, так что незавершённых копий не осталось ни на диске, ни на сервере. Потерян только промежуточный результат.

Локально в браузередо 1 ГБбез регистрации

Коротко о цифрах

Расход одной страницы
А4 при 300 точках на дюйм — около 33 МБ
Потолок вкладки на мобильном
примерно гигабайт занятой памяти
Освобождение памяти
холст и кэш страницы сбрасываются каждую итерацию
Ограничение холста
4096 точек по стороне; А3 снижается примерно до 248 DPI
Судьба исходного файла
открыт только на чтение и остаётся невредим

Как отличить снятие вкладки от зависания

  • Снятие: страница возвращается в исходное состояние, список файлов пуст, прогресса нет, иногда показывается сообщение браузера о сбое.
  • Зависание: индикатор прогресса на месте и не двигается, файл всё ещё выбран, вкладка отвечает на переключение.
  • Снятие происходит внезапно и без предупреждений; зависание нарастает — сначала подтормаживает прокрутка, потом останавливается счётчик.
  • После снятия повтор той же операции даёт тот же результат на том же месте: бюджет памяти от попытки к попытке не меняется.
  • На мобильных устройствах порог заметно ниже: там вкладку снимают примерно на гигабайте занятой памяти.

Из чего складывается пиковый расход

Обработка идёт постранично, и в каждый момент в памяти живёт одна развёрнутая страница. Лист А4 при трёхстах точках на дюйм — это 2480 на 3508 точек, около 8,7 миллиона пикселей и порядка 33 мегабайт. После каждой итерации холст обнуляется и внутренние кэши страницы сбрасываются принудительно, потому что сборщик мусора между итерациями может и не запуститься.

Второе слагаемое растёт до конца работы: собираемый документ целиком лежит в памяти, пока его не отдадут вам. Поэтому предел определяется не самой тяжёлой страницей, а суммой — одна развёрнутая страница плюс весь накопленный результат. Отсюда практический вывод: короткая обработка почти всегда доходит до конца, а длинная упирается в потолок ближе к последним страницам, что и создаёт впечатление случайности.

Что уменьшить, чтобы дойти до конца

  1. Закройте лишние вкладки и другие приложения — бюджет считается на процесс, а не на сайт.
  2. Разделите документ на части по десять-двадцать страниц и обработайте каждую отдельно.
  3. Понизьте разрешение, если операция его допускает: между 300 и 150 точками на дюйм расход отличается вчетверо, потому что растёт площадь, а не сторона.
  4. Не запускайте два инструмента одновременно в соседних вкладках: они делят один бюджет.
  5. Перенесите работу на компьютер, если начинали на телефоне: потолок настольной вкладки в разы выше.
  6. Повторите операцию, ничего больше не открывая, — иногда этого достаточно, чтобы уложиться в оставшуюся память.

Что мы делаем со своей стороны

  • Освобождаем холст и сбрасываем кэш страницы в каждой итерации, а не в конце цикла.
  • Ограничиваем сторону холста 4096 точками: А4 при трёхстах точках проходит, А3 автоматически снижается примерно до 248 точек на дюйм.
  • Ограничиваем плотность предпросмотра двумя пикселями на точку, чтобы экран с высоким разрешением не удваивал расход впустую.
  • Уничтожаем документ движка просмотра после работы, в том числе при ошибке, — иначе память рабочего потока не возвращается.
  • Не пишем ничего поверх исходного файла: он открыт только на чтение, и любой сбой оставляет его нетронутым.

Частые вопросы

Мог ли сбой испортить исходный файл?

Не мог. Файл открывается только на чтение, результат собирается отдельно в памяти вкладки, и запись на диск происходит один раз — когда вы сохраняете готовый документ. Оригинал остаётся байт в байт прежним.

Осталась ли на сервере половина моего документа?

Нет. Операции, которые перезагружают вкладку, идут целиком в браузере, и файл на сервер не передаётся вовсе. Прерванная работа не оставляет следов нигде, кроме очищенной памяти вкладки.

Почему первые страницы прошли, а на последних вкладка упала?

Потому что расход растёт по ходу работы: собираемый документ накапливается в памяти и складывается с текущей развёрнутой страницей. Ближе к концу сумма достигает потолка, хотя каждая отдельная страница по-прежнему помещается.

Поможет ли более мощный компьютер?

Обычно да, но не бесконечно: у вкладки есть собственный предел, который меньше всей оперативной памяти машины. Разделение документа на части работает надёжнее, чем ставка на объём установленной памяти.

Рядом

Частые задачи с этим инструментом