2017-08-22 149 views
1

我正在使用AnimationTimer()類的JavaFX動畫。根據所有可能的消息來源,它應該默認工作在60 fps。但是,在我的筆記本電腦上,刷新率要高得多:300-700,具體取決於窗口大小。我使用IntelliJ IDEA Community Edition和Manjaro Linux GNOME Edition上的Oracle JDK8。我已經嘗試了其他JDK - 仍然是相同的情況。它的行爲就好像JVM選項javafx.animation.fullspeed設置爲true,但事實並非如此。同樣的情況發生在另一臺機器上,同時運行Manjaro GNOME版本。JavaFX 60 fps幀速率上限不起作用

我試過(無證)JVM選項:

javafx.animation.fullspeed=false | true

javafx.animation.framerate=value

javafx.animation.pulse=value

他們改變什麼,即使Settings.get(key)回報值集。在另一臺基於Windows 10的計算機上,FPS的行爲正確:在默認/無VM選項時保持60個值,當在Windows上運行全速時,運行速度爲javafx.animation.fullspeed=true,就像在Manjaro/VirtualBox上一樣。

+0

看看https://stackoverflow.com/questions/44327853/crazy-javafx-frame-rate-any-ideas和它下面的評論。 –

+1

這裏是上面提到的錯誤報告James_D的鏈接。 https://bugs.openjdk.java.net/browse/JDK-8181764但問題是這個bug被拒絕了,因爲JavaFX團隊無法複製它。所以這似乎是一個非常具體的設置觸發這個錯誤。 – mipa

+0

謝謝@James_D,解決方法很好地解決了這個問題。我將在上面的問題中添加一個片段。我不會自己找到解決方案。 –

回答

2

樣品溶液感謝張貼@James_D註釋和以下內容:

import javafx.application.Application; 

public class Start { 

    public static void main(String[] args) { 

     //must be set before launching the Main class 
     System.setProperty("quantum.multithreaded", "false"); 

     Application.launch(Main.class, args); 
    } 
} 

請仔細閱讀評論this question瞭解更多信息。

此外:這可能是一個雙重圖形相關的問題。強制使用像# optirun ./idea.sh這樣的輔助圖形也可以解決此問題。但是,在生產版本中,我認爲將quantum.multithreaded設置爲false會更好。

+0

剛剛發現我的Ubuntu 17.04與Java 1.8.0..131運行在2500fps ......難怪CPU很忙。 –

+0

我在Manjaro Linux上的應用程序使用12-15%的處理器,現在使用1-2%。 CPU溫度也恢復到穩定的45度。 –