Случайные замедления Java в Mac OS

У меня есть Java-программа для выполнения ряда научных расчетов на нескольких процессорах, разбивая ее на части и выполняя каждую часть в отдельном потоке. Проблема тривиально разделима, так чтоНет противоречий или связи между потоками. Единственными общими данными, к которым они получают доступ, являются некоторые общие статические кэши, которые ненеобходимо синхронизировать их доступ и некоторые файлы данных на жестком диске. Потоки также постоянно записывают на диск, но в отдельные файлы.

Моя проблема в том, что иногда, когда я запускаю программу, я получаю очень хорошую скорость, а иногда, когда я запускаю одно и то же, она работает очень медленно. Если я вижу, что он работает медленно и запускает ctrl-C и перезапускает, он обычно снова начинает работать быстро. Кажется, он переключается в медленный или быстрый режим на ранней стадии бега и никогда не переключается между режимами.

Я подключил его к jconsole, и он неКажется, это проблема памяти. Когда я поймал это медленно, яя пытался подключить к нему профилировщик, но профилировщик победилт подключиться. Я'мы пытались запустить с -Xprof, но дампы между медленным и быстрымкажется, сильно отличается. Я также пытался использовать разные сборщики мусора и разные размеры разных частей пространства памяти.

Моя машина - Mac Pro с чередующимся разделом RAID. Использование процессора никогда не прекращается, работает ли он медленно или быстро, что вы ожидаете, если потоки тратят слишком много времени на блокировку чтения с диска, поэтому я не будуНе думаю, что это может быть проблема чтения с диска.

У меня вопрос, какие проблемы с моим кодом могут вызвать это? Или это может быть проблемой ОС? У меня нетЯ не смог скопировать его на Windows-машине, но я неУ меня нет Windows-компьютера с подобной настройкой RAID.

Ответы на вопрос(4)

Ваш ответ на вопрос