2015-11-10 2 views
1

У меня возникли проблемы с использованием приложений JFX. На моей локальной развивающейся системе (Linux) мое приложение получило использование процессора около 0-2%. Когда я устанавливаю и запускаю свое приложение в системе windows vm клиента, использование процессора намного выше, около 50-70%. Это явление происходит только в системе VM. Если я запускаю приложение в локальной системе Windows, все работает нормально. Поэтому я думаю, что это связано с графическим адаптером vm и его конфигурацией. Но клиент говорит, что нет конфигурации графического адаптера. Я исследовал подобные проблемы с производительностью, и я попробовал некоторые варианты виртуальной машины Java, как:Использование ЦП JavaFX

-Dprism.order=es2,es1,sw,j2d 
-Dsun.java2d.opengl=true 
-Dprism.vsync=false 
-Dprism.forceGPU=true 

Опцию -Dprism.order = es2, ES1, Sw, j сократили использование до 25%. Все еще высоко, но я не знаю, что еще я могу сделать?

Редактировать: Спасибо за ответ. Когда в запуске приложения без -Dprism.order = es2, es1, Sw, j2d я получил follwoing сообщения и 70% загрузки процессора:

D3DPipelineManager: Created D3D9Ex device Direct3D initialization succeeded (X) Got class = class com.sun.prism.d3d.D3DPipeline Initialized prism pipeline: com.sun.prism.d3d.D3DPipeline 

Когда я запустить приложение с параметром я получил следующее сообщение и 20% использование процессора:

Prism pipeline name = com.sun.prism.sw.SWPipeline (X) Got class = class com.sun.prism.sw.SWPipeline Initialized prism pipeline: com.sun.prism.sw.SWPipeline 
+0

Попробуйте добавить параметр -Dprism.verbose = true, который выливает подробное ведение журнала настроек. Это должно сказать вам, какой путь использует JavaFX в виртуальной машине. Релевантный, но не совсем повторяющийся: http://stackoverflow.com/questions/26536841/javafx-animation-poor-performance-consumes-all-my-cpu – Gimby

+0

Спасибо за ответ. Когда в запуске приложения без -Dprism.order = es2, es1, Sw, j2d я получил follwoing сообщения и 70% загрузки процессора: D3DPipelineManager: Создано D3D9Ex устройство инициализации Direct3D преуспела (X) есть класс = класс com.sun .prism.d3d.D3DPipeline Initialized призма трубопровода: com.sun.prism.d3d.D3DPipeline Когда я запустить приложение с параметром я получил следующее сообщение и 20% использование процессора: Prism название трубопровода = com.sun .prism.sw.SWPipeline (X) Получил класс = класс com.sun.prism.sw.SWPipeline Инициализированный призменный трубопровод: com.sun.prism.sw.SWPipeline – Dennis

+0

sry. Я сделал это сейчас – Dennis

ответ

0

Согласно JavaFX architecture, если движок рендеринга не может найти подходящий аппаратное ускорение трубопровода, он возвращается к разработке программного рендеринга, который является процессор. Поскольку это проблема с системой VM, возможно, что графические драйверы неправильно установлены и/или устарели и/или не поддерживаются JavaFX. Аналогично, для библиотек DirectX, так как это технология, используемая JavaFX для Windows. Еще одна вещь, которую нужно проверить, заключается в том, что сама конфигурация VM позволяет аппаратное ускорение (обычно это определяется при создании конфигурации).

Итак, шаги предпринять:

  1. Проверка конфигурации VM
  2. Update JDK
  3. Обновление графических драйверов (как правило, предоставляемые поставщиком программного обеспечения VM)
  4. Обновление DirectX

Сделав это, вы должны иметь возможность отслеживать проблему или, по крайней мере, сужать вещи, влияющие на производительность

+0

Спасибо за ответ. Я попытаюсь связаться с подрядчиком по обслуживанию, который отвечает за конфигурацию виртуальной машины клиента – Dennis

Смежные вопросы