Общий объем памяти холста превышает максимальный предел (224 МБ)

1

Я использую эти манометры для визуализации температуры и числа оборотов датчика. https://canvas-gauges.com/

Когда манометры достигают 224 мб, датчики исчезают, и приложение перестает работать немного позже.

Возможно ли продлить память или очистить наличные деньги? Было бы грустно отступать от progressbars, потому что датчики выглядят очень профессионально...

Журнал консоли Error Изображение 174551

Эта ошибка возникает сначала в линейной, а затем в радиальной калибровке. Я старался.clear() каждые 5. значение, но, похоже, это больше не функция...

Я запускаю тесты на последней версии iPhone (12.0) с картой Cordova. Заранее большое спасибо.

Примеры кода. Прежде всего, датчик дает мне значения BLE. Я подписал характеристику, которая дает мне данные в base64, которые я конвертирую в hex. Мне нужно разделить массив и изменить его. После этого я передаю данные в нужную функцию, например, когда нарисован температурный датчик:

        var hex = base64toHEX(result.value);
        console.log("calc in Hex: "+hex);

        function split(hex){
            var commaSeperated = "";
            for(var i=0; i<=hex.length; i++){

                commaSeperated += hex.charAt(i);

                if(i==13 || i==17 || i==25 || i==27 || i==29){
                    commaSeperated += ",";
                }
            }
            return commaSeperated.split(',');
        }
        var nutzwerte = [];
        nutzwerte = split(hex);


        //COnvert Temp value in dezimal and pass to gauge_funktion
        var temp = parseInt(nutzwerte[3],16);
        new_temp_gauge(temp, Temp_max_global, G_temp_yellow,G_temp_red);
        switch_icon_temp(temp, Temp_max_global, G_temp_yellow,G_temp_red);
        document.getElementById("temp_aktuell").textContent = temp+"°C";
        console.log("Temperatur: "+temp+"°C");

Эта функция рисует температурный датчик:

function new_temp_gauge(val, max_val, limit_yellow, limit_red){

  var gauge_Temp = new LinearGauge({
    renderTo: document.getElementById('myCanvas'),
    width: 150,
    height: 370,
    borderRadius: 20,
    borders: 0,
    barStrokeWidth: 20,
    minorTicks: 10,
    majorTicks: [0,10,20,30,40,50,60,70,80,90,100],
    highlights: [
        {
          "from": limit_yellow,
            "to": limit_red,
            "color": "rgba(255, 255, 0, .75)"
        },
        {
            "from": limit_red,
            "to": 100,
            "color": "rgba(200, 50, 50, .75)"
        }
    ],

    units: "°C",
    colorValueBoxShadow: false
  }).draw();

  gauge_Temp.update({ animation:false,value: val  });
  document.getElementById("crit_Temp").textContent =max_val+"°C";
}

Извините за немецкий... "nutzwerte" - это просто имя для данных, которые я использую.

  • 1
    224MB это много! Можете ли вы дать больше информации о канве (ширина + высота) и почему он становится таким большим?
  • 0
    Спасибо за быстрый ответ. Датчик предоставляет мне каждые 500 мс новые значения не только температуры и оборотов в минуту. Я использую только каждое 5-е значение. Использование ресурсов моего смартфона безумно после 20 минут. ширина: 150, высота: 370, Почему ширина и высота датчика соответствуют памяти? Это действительно интересно, никогда не задумываясь об этом.
Показать ещё 10 комментариев
Теги:
canvas
cordova
memory

1 ответ

0

Вот некоторые обсуждения той же проблемы.

Общее использование памяти холста превышает максимальный предел (Safari 12)

Такая проблема появляется только на iOS12. Кажется, они меняют правило ограничения памяти холста.

Мое приложение также имеет эту проблему. И мы обнаружили, что ограничение холста составляет 288 МБ на iPhoneX iOS12, 256 МБ на iPhone6plus или iPad.

Кстати, какую машину iPhone вы тестировали?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню