Почему десериализация Java ограничена ЦП-?

У меня есть программа на Java, которая подготавливает данные в довольно сложную и большую структуру данных в памяти (несколько ГБ)и сериализует их на диск, и еще одна программа, которая считывает сериализованную структуру данных в память. Я был удивлен, заметив, что шаг десериализации довольно медленный и что он привязан к процессору-. (100% загрузка ЦП в top, но только от 3 до 5 МБ/с при чтении с iotop, что очень мало для того, что должно быть последовательным чтением на жестком диске). Процессор довольно свежий (Core i7-3820), структура умещается в памяти, пространство подкачки не настроено.

Почему это так? Есть ли альтернативный способ сериализации объектов в Java, в котором процессор не является узким местом?

Вот код десериализации, если это имеет значение:

FileInputStream f = new FileInputStream(path);
ObjectInputStream of = new ObjectInputStream(f);
Object obj = of.readObject();
5
задан vaultah 29 May 2015 в 09:04
поделиться