Uncaught exception out of memory error

I am debugging a javascript/html5 web app that uses a lot of memory. Occasionally I get an error message in the console window saying "uncaught exception: out of memory". Is there a way for m...

I am debugging a javascript/html5 web app that uses a lot of memory. Occasionally I get an error message in the console window saying

"uncaught exception: out of memory".  

Is there a way for me to gracefully handle this error inside the app?

Ultimately I need to re-write parts of this to prevent this from happening in the first place.

asked Sep 18, 2014 at 3:18

user547794's user avatar

user547794user547794

14k36 gold badges102 silver badges150 bronze badges

2

You should calclulate size of your localStorage,
window.localStorage is full

as a solution is to try to add something

var localStorageSpace = function(){
    var allStrings = '';
    for(var key in window.localStorage){
        if(window.localStorage.hasOwnProperty(key)){
            allStrings += window.localStorage[key];
        }
    }
    return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)';
};

var storageIsFull = function () {
    var size = localStorageSpace(); // old size

    // try to add data
    var er;
    try {
         window.localStorage.setItem("test-size", "1");
    } catch(er) {}

    // check if data added
    var isFull = (size === localStorageSpace());
    window.localStorage.removeItem("test-size");

    return isFull;
}

answered Mar 11, 2015 at 12:51

Sergiu Gordienco's user avatar

1

I also got the same error message recently when working on a project having lots of JS and sending Json, but the solution which I found was to update input type=»submit» attribute to input type=»button». I know there are limitations of using input type=»button»..> and the solution looks weird, but if your application has ajax with JS,Json data, you can give it a try. Thanks.

answered Jul 28, 2015 at 8:28

safian syed's user avatar

1

Faced the same problem in Firefox then later I came to know I was trying to reload a HTML page even before setting up some data into local-storage inside if loop. So you need to take care of that one and also check somewhere ID is repeating or not.

But same thing was working great in Chrome. Maybe Chrome is more Intelligent.

answered Jun 18, 2015 at 6:53

Shasha's user avatar

ShashaShasha

6691 gold badge8 silver badges26 bronze badges

I have a lightning component that has Chart.js (v.2.3) as a dependency. It has been packaged before Summer 17 and it was functional. It has also been tested and was functional in LockerService enabled dev orgs.

I upgraded its’ API version to v40 (LockerService enforced) as part of my preparation to package our next product release and submit it for security review.

After doing so, the component becomes extremely slow and crashes in Firefox and Safari (it still works as expected in Chrome).

On Firefox, if I click the browser’s wait button several times after being warned that a script takes too long to complete execution, i finally get the error:
uncaught exception: out of memory out of memory aura_proddebug.js:24596:11

If I stop the script I get the following stack trace:

Error: Script terminated by timeout at:
next@https://*.lightning.force.com/auraFW/javascript/ChXnmCA7O-Fvbs9jcqI9Ow/aura_proddebug.js:19187:1
SecureFunction@https://*.force.com/auraFW/javascript/ChXnmCA7O-Fvbs9jcqI9Ow/aura_proddebug.js:21018:31
draw/<@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:15:7332
[26]</e.exports/o.each@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:14:6902
draw@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:15:7225
draw/<@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:13:30133
[26]</e.exports/o.each@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:14:6902
draw@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:13:30106
render/r.render@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:13:29805
startDigest@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:13:23857
requestAnimationFrame/t.request<@/resource/1499768156000/*__CommonBundle/vendor/charts/Chart230.min.js:13:23356
SecureFunction@https://*.lightning.force.com/auraFW/javascript/ChXnmCA7O-Fvbs9jcqI9Ow/aura_proddebug.js:21018:31

stack-trace-first-line

This seems to me a LockerService bug (especially since the component is still functional in Chrome). Any thoughts?

[Update] — Reproducible steps

Chart.js v.2.3.0
https://github.com/chartjs/Chart.js/releases/download/v2.3.0/Chart.min.js

lightningChart.cmp

<aura:component implements="flexipage:availableForAllPageTypes" access="global" >
  <!-- REPLACE ME WITH A VALID STATIC RESOURCE -->
  <ltng:require scripts="{!join(',', 
        $Resource.CommonBundle + '/vendor/charts/Chart230.min.js')}" 
    afterScriptsLoaded="{!c.drawChart}"/>

  <div>
    <canvas id="chartCanvas" width="300" height="400" />
  </div>
</aura:component>

lightningChartController.js

({
  drawChart : function(component, event, helper) {

    if (typeof Chart === 'undefined') return;

    var config = {
        type: 'doughnut',
        data: {
            labels: [
                "One", "Two", "Three",
                "Four", "Five", "Six",
                "Seven", "Eight", "Nine"
            ],
            datasets: [{
                data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
                backgroundColor: [
                    '#b74f9c', '#b72363', '#ec2aab',
                    '#06a706', '#03b7bb', '#8662cf',
                    '#ee8d98', '#e3dd60', '#c75364'
                ],
            }]
        },
        options: {
            responsive: true,
            maintainAspectRatio: true
        }
    };

    var chartCanvasElement = document.getElementById('chartCanvas');
    var ctx = chartCanvasElement.getContext('2d');
    var instance = new Chart(ctx, config);
  }
})

IMPORTANT: Ensure the component’s Bundle Version Settings is set to have API Version 40

  • Drop the above component on a Lightning Page.
  • View the Page in Chrome: chart renders
  • View the Page in Firefox (in my case v54.0.1): browser eventually throws the following console log: uncaught exception: out of memory out of memory

Многие пользователи ПК во время работы с какой-либо программой могут столкнуться с «вылетом» указанной программы, и появившимся сообщением «Out of memory». Возникшая проблема может иметь множество причин, начиная от банального недостатка памяти на пользовательском ПК, и заканчивая некорректной работой с памятью какой-либо программы.

  • Причины появления дисфункции
  • Как исправить ошибку «Out of memory»
  • Заключение

Ошибка out of memory

Причины появления дисфункции

Сообщение «Out of memory» (в переводе дословно «вне памяти», или «недостаточно памяти») обычно возникает при недостатке памяти на пользовательском компьютере. В частности же, в появлении данной ошибки «виновен» следующий набор факторов:

  • Недостаток памяти RAM на вашем ПК (рабочей памяти, планки которой установлены на материнской плате вашего компьютера). Если на вашем компьютере установлен всего 1 гигабайт памяти, вы будете встречаться с описываемой ошибкой довольно часто. Нормальным же ныне считается наличие на компьютере 4 гигабайт памяти и выше;
  • Недостаток места на жёстком диске.

Когда вашему компьютеру не хватает физической R.A.M. памяти, он заимствует часть места на жёстком диске, и создаёт так называемую «виртуальную память». Система временно хранит в такой виртуальной памяти ту часть данных, которая не помещается в памяти обычной. Такие данные обычно хранятся в файле «pagefile.sys», размер которого может увеличиваться или уменьшаться в зависимости от специфики работы вашей ОС. Если на диске будет недостаточно места, файл «pagefile.sys» не сможет расти, и пользователь получит рассматриваемую ошибку.

  • При одновременном запуске на ПК большого количества программ, каждая из которых бронирует часть памяти ПК под свои задачи;
  • При запуск большого количества вкладок браузера. Веб-навигаторы уровня «Firefox» или «Google Chrome» способны занимать от 500 мегабайт до 1 гигабайта памяти под свой функционал, при этом число открытых вкладок и соответствующей обслуживающей памяти может быть ограничено системой. Специалисты Майрософт называют такую проблему «the desktop heap limitation» — «ограничение кучи рабочего стола»);
  • Некорректная работа с памятью ряда программ (наиболее часто это игровые программы);
  • Не оптимальный размер файла подкачки, с которым работает система.Планка памяти и датчик

Как исправить ошибку «Out of memory»

Для решения указанной проблемы рекомендую сделать следующее:

  1. Перезагрузите ваш ПК, и запустите требуемую программу вновь. Возможно, что проблема имеет случайный характер, и более повторяться не будет;
  2. Перед запуском нужной программы закройте другие ненужные программы (браузер, музыкальный или видео плеер, текстовый или графический редактор, мессенджер и так далее);
  3. Если проблема возникает во время серфинга в сети, закройте всё множество вкладок вашего браузера (при наличии), оставив лишь одну или две.Много открытых вкладок

Альтернативным вариантом решения проблемы является установка соответствующего фикса от Майкрософт. Или использование расширений или дополнений для браузера уровня «The Great Suspender» для «Google Chrome», хорошо работающего с ненужными вкладками браузера.

  • Добавьте оперативной памяти на ваш ПК. Если у вас на компьютере установлено 1-2 гигабайта памяти, будет оптимальным довести её объём до 4 гигабайт (а для 64-битных Виндовс 7, 8 и 10 версии рекомендую 8 и более гигабайт);Планка памяти
  • Убедитесь, что на вашем жёстком диске (или SSD) достаточно свободного места. При необходимости, освободите диск от ненужных файлов;
  • Используйте инструмент командной строки BCDEdit для изменения параметров загрузки системы. Если у вас на ПК установлена Виндовс 7 и более, запустите командную строку от имени администратора на Виндовс 7 и Виндовс 10, и в ней наберите:

bcdedit/set IncreaseUserVa 3072

И нажмите на ввод, и перезагрузите ваш ПК. Функционал данной команды позволяет выделить пользовательским приложениям 3 гигабайта оперативной памяти для работы. В некоторых системах этого может быть слишком много, потому если после ввода данной команды система начала чаще сбоить, то введите в командной строке от имени администратора:

bcdedit /set IncreaseUserVa 2560 что позволит задействовать 2,5 гигабайта вместо ранее забронированных 3.

Если ситуацию этим исправить не удалось, верните настройки на состояние по умолчанию:

bcdedit /deletevalue IncreaseUserVa

  • Увеличьте объём файла подкачки. Нажмите кнопку «Пуск», в строке поиска введите sysdm.cpl и нажмите ввод. В открывшемся окне настроек системы выберите «Дополнительно» — «Быстродействие» — «Параметры» — «Дополнительно» — «Виртуальная память» — «Изменить». Снимите галочку с опции автоматического размера, поставьте галочку на «Указать размер», и поставьте исходный размер в 8192, и максимальный в 8192. Затем выберите «Задать»;

    Окно виртуальной памяти

    Установите нужный размер файла подкачки

  • Если ошибка возникает при использовании игровой программы, перейдите в её графические настройки, и выберите их минимальные значения;
  • Произведите правильную настройку «Java». Для решения проблем с игровой программой «Майнкрафт» перейдите в Панель управления Виндовс, найдите там «Java» и запустите данную среду исполнения. Нажмите на кнопку «View», затем дважды кликните на «Runtime Parametres». Введите туда –Xms256m – Xmx3072m (или больше). Xms – это минимальное выделение ОЗУ, Xmx – максимальное. Значение Xmx рекомендуют устанавливать на процентов 70-80% от общего объёма ОЗУ. Примените изменения, и перезагрузите ваш ПК.

Заключение

Ошибка «Out of memory» может иметь множество причин, связанных как с физическим недостатком памяти на ПК, так и другими детерминантами, изложенными мной выше. Для решения проблемы советую закрыть ненужные программы (вкладки браузера) на вашем компьютере (тем самым разгрузив его память), а самым эффективным инструментом является установка дополнительной планки памяти на ПК, что в большинстве случаев поможет избавиться от ошибки на вашем компьютере.

Понравилась статья? Поделить с друзьями:
  • Uncaught exception error eperm operation not permitted
  • Uncaught error no recaptcha clients exist
  • Uncaught error class mongo not found
  • Unable to set graphics mode error
  • Unable to set display mode как исправить