JavaFx WebView Javascript的变化会占用CPU

时间:2018-06-18 10:16:27

标签: javascript java javafx javafx-webengine javafx-webview

我有一个在JFX webView中运行AngularJs网站的项目。每当某个javascript在循环中运行时,CPU就会上升到100%。更具体地说,我有一个

 $scope.moveFloatingBanner = function () {
    try {

        var dx = $scope.activeFloatingBanner.startX - $scope.activeFloatingBanner.endX,
            dy = $scope.activeFloatingBanner.startY - $scope.activeFloatingBanner.endY,
            i = 1;

        function loop() {
            LogService.info("In lool");
            if ($scope.breakAnimation) {
                $scope.domElement.style.display = 'none';
                return;
            }
            if (i >= $scope.activeFloatingBanner.time) {
                $scope.domElement.style.display = 'none';
                $scope.changeFloatingBannerTimeout = $timeout($scope.changeFloatingBanner, $scope.activeFloatingBanner.nextDelay);
                return;
            }
            i += 1;
            $scope.domElement.style.left = ($scope.activeFloatingBanner.startX - (dx * i / $scope.activeFloatingBanner.time)).toFixed(0) + 'px';
            $scope.domElement.style.top = ($scope.activeFloatingBanner.startY - (dy * i / $scope.activeFloatingBanner.time)).toFixed(0) + 'px';
            $scope.moveBannerTimeout = $timeout(loop, 1);
        }

        loop();
    }
    catch (e) {
        LogService.error(e);
    }
}

这是负责移动横幅的代码,在chrome或任何其他浏览器中运行时,此代码没有问题。代码的另一部分负责更新UI上的横幅,它是一个永久运行的超时,每10秒从服务器检索一次新横幅。当两个循环同时运行时,CPU上升到140%。运行的CPU非常弱,UI开始滞后。在本地计算机上运行时,它不会滞后,但GPU会上升到大约40-50%。在没有这两个循环的情况下运行时,弱机器上的CPU大约为6-7%,而我的本地机器使用大约2%的GPU。我正在使用oracle JDK 8,java版本" 1.8.0_162-ea"。

任何可能导致问题的想法?也许JFX版本问题? JDK版本?

0 个答案:

没有答案