当前位置: 首页 > 知识库问答 >
问题:

CPU使用率JavaFX

方琦
2023-03-14

我在使用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 

共有1个答案

顾兴昌
2023-03-14

根据JavaFX架构,如果渲染引擎找不到合适的硬件加速管道,它会退回到软件渲染,这是CPU密集型的。由于是VM系统存在问题,因此可能是图形驱动程序未正确安装和/或已过时和/或JavaFX不支持。DirectX库也有类似的情况,因为这是JavaFX在Windows上使用的技术。另一件需要检查的事情是VM配置本身是否允许硬件加速(这通常是在创建配置时定义的)。

因此,要采取的步骤是:

    < li >检查虚拟机配置 < li >更新JDK < li >更新图形驱动程序(通常由VM软件提供商提供) < li >更新DirectX

这样做之后,您应该能够跟踪问题,或者至少缩小影响性能的范围

 类似资料:
  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 最近,我的服务器CPU性能一直很高。 CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。 运行完最高命令后,我看到MySQL使用的CPU是160%! 最近,我一直在优化表,并切换到持久连接。这会

  • 我对wowza中的cpu使用有问题。 这是可疑的线程。这个线程被占用了高CPU。 这个线程占用了大量cpu。这是jdk bug还是其他? 这是我的环境。 CentOS 5.4版(最终版) WowzaMediaServer-3.1.2 java版本1.6.0_23 java(TM)SE Runtime Environment(构建1.6.0_23-b05)java HotSpot(TM)64位服务器

  • 问题内容: 我正在尝试使用Java获取当前正在运行的Java虚拟机使用的CPU百分比。我的研究指出我要使用该类。通过在线示例,我编写了以下内容: 在两台计算机上对此进行测试后,我无法停止获得两个调用的结果。我尝试通过各种方法使用Java 7和6的64位和32位版本运行此代码。不过,我得到的是打印出的该,根据的Javadoc, 我不知道还要在这里做什么。获取CPU负载至关重要,我想避免使用其他库,例

  • 我正在使用mod安全规则https://github.com/SpiderLabs/owasp-modsecurity-crs清理用户输入数据。在将用户输入与mod security rule正则表达式匹配时,我面临着cpu激增和延迟。总的来说,它包含500个正则表达式来检查不同类型的攻击(xss、badrobots、generic和sql)。对于每个请求,我检查所有参数并对照所有这500个正则表

  • 谁能解释一下这两种方法的真正区别 vm。GetTotalizationofCPU(CloudSim.clock()); 和 cloudlet.get利用OfCpu(CloudSim.clock()); 提前感谢

  • 问题内容: 我的Go程序需要知道所有系统和用户进程的当前cpu使用率。 我如何获得? 问题答案: 我遇到了类似的问题,但从未找到轻量级的实现。这是我的解决方案的精简版,可以回答您的特定问题。我按照tylerl的建议对文件进行采样。您会注意到,我在两次采样之间等待3秒以匹配top的输出,但是在1或2秒的情况下我也取得了不错的结果。我在go例程中的循环中运行类似的代码,然后在需要其他go例程时访问cp

  • 问题内容: 我正在使用Sigar来获取应用程序服务器中当前正在运行的JVM的CPU使用率,并将其存储为该数据的历史视图,但是我总是获得0%的CPU百分比。 同时,我保持visualVM处于打开状态以监视CPU使用率,并且看到visualVM中的CPU%定期更改,而使用Sigar总是报告0%。 这是我定期运行的代码: 该代码始终给出0%。 在这种情况下,我在做什么错呢?如何让Sigar显示类似于Vi

  • 我有: a)1台服务器(4vcpu,8GB)运行hazelcast节点, b)1台(4vcpu,8MB)运行tomcat 7上的hazelcash性能中心。 两台服务器都在同一个本地网络中。 我已经测试了2个场景:< br >场景1)我已经开始了a)和b)。没有传输数据。a)上的cpu使用率为0-10%。< br >情景2)我已经开始了a)和b)。我已经将大量数据转移到a)上进行处理,并一直等到它