javascript - 浏览器中的 Google Chart 高 RAM

标签 javascript charts google-visualization

我看到使用谷歌图表会占用大量内存。

我必须说我有一些使用 javascript 的代码,它让浏览器每 7 秒加载一个新图表,它确实为 Google Draw Chart 函数提供了来自新文件的新数据并绘制了图表,但这似乎创建了在我的 PC 上使用大量 RAM。有人知道如何避免这种情况的技巧吗?我认为也许浏览器正在将之前的所有数据保存在缓存中,如果不这样做,那么几分钟后 RAM 可能不会变得那么高?因为现在它确实在几分钟内变得越来越高,达到 100% 并且浏览器停止工作。

这是我当前的代码:

function drawVisualization() 
{

//-- From this textfile the chart gets info which is the new symbol chart
var Textinhalt = $.ajax({ url: "Chartsettings.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
var Setting = JSON.parse(Textinhalt);

 Symbol=Setting.Selection[0].symbol;
 Timeframe=Setting.Selection[0].timeframe;
 Broker=Setting.Selection[0].broker;

//--Now the new data is been getting from php response file
var fileurl = "getData.php?symbol="+Symbol+"&timeframe="+Timeframe+"&broker="+Broker;

var jsonData = $.ajax({
    url: fileurl,
    contentType:"application/json",
    dataType:"json",
    async: false
    }).responseText;
var array=$.parseJSON(jsonData);

//--Now new data have been saved into array and will be draw
var data =google.visualization.arrayToDataTable(array,true);

var options = { 
    legend: 'none'
    };

    var chart = new google.visualization.CandlestickChart(document.getElementById('chart_div'));
     chart.draw(data, options);

}


//--If this function is clicked the google charts get refreshed every 7 seconds and i did see that my browser creates more and more RAM usuage till it goes over 100% and stops working
function PlayCharts()
{
 drawVisualization();  
 setTimeout(PlaySignals, 7000);
}

最佳答案

部分问题可能是您每次都在创建新图表
而不是用新数据绘制相同的图表

建议稍微改变范围,
将图表变量移到 drawVisualization
之外 但是你必须等到谷歌加载完才能创建
不确定你在加载功能上的页面是什么样的

此外,$.ajax 上的 async: false 已弃用

推荐类似下面的设置...

// move declarations outside of drawVisualization
var chart;
var options = {
  legend: 'none'
};

// load google charts
google.charts.load('current', {
  packages:['corechart']
}).then(function () {
  // create chart
  chart = new google.visualization.CandlestickChart(document.getElementById('chart_div'));

  // move other on page load functions here
  // google.charts.load can be used instead of --> $(document).ready
});

function drawVisualization() {
  //-- From this textfile the chart gets info which is the new symbol chart
  var Textinhalt = $.ajax({ url: "Chartsettings.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
  var Setting = JSON.parse(Textinhalt);

  Symbol=Setting.Selection[0].symbol;
  Timeframe=Setting.Selection[0].timeframe;
  Broker=Setting.Selection[0].broker;

  //--Now the new data is been getting from php response file
  var fileurl = "getData.php?symbol="+Symbol+"&timeframe="+Timeframe+"&broker="+Broker;

  $.ajax({
    url: fileurl,
    contentType: 'application/json',
    dataType: 'json'
  }).done(function (jsonData) {
    var array = $.parseJSON(jsonData);

    //--Now new data have been saved into array and will be draw
    var data = google.visualization.arrayToDataTable(array, true);

    // draw same chart
    chart.draw(data, options);
  });
}

function PlayCharts() {
  drawVisualization();
  setTimeout(PlaySignals, 7000);
}

关于javascript - 浏览器中的 Google Chart 高 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48299393/

相关文章:

javascript - 单击时获取任何元素 tagName

javascript - 在 jquery 中添加点击回调

javascript - 尝试更改 Textarea 的值(使用 Skulpt)

charts - 如何更改 RRDTool 图表?

sql - 如何使用 SQL 查询创建图表数据

php - MySQL 到 JSON 结果为空的 Google 可视化图表

javascript - 需要帮助来获取 css 'font-size' 的浮点值

javascript - 谷歌图表增加最大值

android - 无法设置 null 的属性 'overflow'

javascript - 谷歌图表图例缩小文本