我有一个在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版本?