我真的不知道該做什麼了。我正在開發一個我的web應用程序中的高端圖表。數據正確加載,但只要我啓用圖表選項中的zoomType:'x',我開始在縮放時出現錯誤。Highstock |放大xAxis導致瀏覽器崩潰
我無法正確重現錯誤。但是,當我嘗試縮放xAxis並選擇幾乎所有在圖表中顯示的點時,它都會運行並放大。但是,當我選擇較小的一組點時,瀏覽器會停止,直到停用Chrome。在任務管理器中,我看到內存構建高達1GB的內存使用量。我在其他瀏覽器中測試過,並得到相同的錯誤。我不處理xAxis上的事件 - 只是放大和縮小。 highstockData.jsp只是一個包含許多時間戳的文件。
tldr:當我選擇很多點時,它會很好。 當我只選擇幾個點,瀏覽器崩潰和內存泄漏開始
更新:當我使rangeSelector並單擊以100萬次,它開始建立的內存了。但是當我等待更多分鐘(最多5分鐘)時,它會加載並且內存開始再次下降。
Update2:我試着調試一下。我等了將近5分鐘後,我在Chrome中對cpu使用情況進行了截圖。它說接近80%的cpu使用量被getnonlineartimeticks使用。
解決方案:只供他人蔘考。它已經解決了。問題是
xAxis : {
tickInterval : 4
},
一個小tickInterval強制x軸引起的一切煩惱......
這裏是一些代碼:
function initHighstock() {
options = {
chart : {
zoomType : 'x',
renderTo : 'highstockContainer'
},
plotOptions : {
series : {
lineWidth : 0,
marker : {
enabled : true,
radius : 3
},
}
},
navigator : {
enabled : false
},
yAxis : {
min : 0,
max : 24,
tickInterval : 4
},
xAxis : {
tickInterval : 4
},
tooltip : {
shared : false,
formatter : function() {
return '<b>' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '</b>' + '<br/>' + 'Time of day: '
+ this.y;
}
},
rangeSelector : {
enabled : true
},
title : {
text : 'Diary'
},
series : []
};
$.get('highstockData.jsp', function(data) {
// Split the lines
var lines = data.split(';');
var series = {
data : []
};
for (var k = 0; k < lines.length; k++) {
if (lines[k].length > 0) {
var line = lines[k];
var items = line.split(',');
var myDate = new Date(Math.round(items[0] * 1000));
series.data.push([ parseInt(Math.round(myDate.getTime())), parseInt(Math.round(myDate.getHours())) ]);
myDate = null;
}
}
series.data.sort(function(x, y) {
return x[0] - y[0];
});
options.series.push(series);
// Create the chart
var chart1 = new Highcharts.StockChart(options);
chart1.redraw();
});
};
您可以在小提琴上生成示例嗎? –
我無法在jsfiddle上重現錯誤。但我可以把它放在我的網絡服務器上。會有幫助嗎? – user1651804