我使用JFX应用程序遇到了一些问题。在我的本地开发系统(Linux)上,我的应用程序的CPU使用率约为0-2%。当我在客户Windows vm系统上安装并运行我的应用程序时,cpu的使用率要高得多,大约为50-70%。此现象仅在VM系统上发生。如果我在本地Windows系统上运行应用程序,一切运行正常。因此我猜它与vm图形适配器及其配置有关。但客户表示没有可用的图形适配器配置。 我研究了类似的性能问题,并尝试了一些JVM选项,如:
-Dprism.order=es2,es1,sw,j2d
-Dsun.java2d.opengl=true
-Dprism.vsync=false
-Dprism.forceGPU=true
选项-Dprism.order = es2,es1,sw,j2d将使用率降低到25%以下。仍然很高但我不知道我还能做什么?
编辑:感谢您的回复。在运行没有-Dprism.order = es2,es1,sw,j2d的应用程序时,我得到了以下消息和70%的CPU使用率:
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%的cpu使用情况:
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 :(得分:0)
根据JavaFX architecture,如果渲染引擎找不到合适的硬件加速管道,它会回退到CPU密集型的软件渲染。由于它是一个存在问题的VM系统,因此JavaFX可能没有正确安装和/或过时和/或不支持任何图形驱动程序。类似于DirectX库,因为这是JavaFX在Windows上使用的技术。要检查的另一件事是VM配置本身是否允许硬件加速(这通常在创建配置时定义)。
所以,采取步骤:
完成此操作后,您应该能够追踪问题,或者至少缩小影响性能的因素