Почему я получаю предупреждение "Out of Windows Resources", когда открываю многочисленные окна фигур в MATLAB [7.0 (R14) и выше] на компьютере под управлением Microsoft Windows?

Мое разрешение экрана установлено на 1600x1200. В MATLAB я установил свойство "DefaultFigurePosition", используя следующую команду:

set(0,'DefaultFigurePosition', [400 100 1050 1000])

Затем я открываю несколько окон с цифрами, используя следующий цикл:

for i = 1:46
    figure
end

На последнем рисунке я получаю следующее сообщение в окне команд:

    Out of Windows Resources: Allocation of bitmap failed.  
Disabling backingstore for current figure.

Ответы

Ответ 1

Один из способов избежать этого сообщения - уменьшить размер фигуры по умолчанию, заданный третьим и четвертым элементами "DefaultFigurePosition".

Кроме того, вы можете попытаться увеличить пространство кучи Java VM, как описано в следующем техническом решении "Как увеличить пространство кучи для виртуальной машины Java в MATLAB 6.0 (R12) и более поздних версиях?" по адресу:

http://www.mathworks.com/support/solutions/en/data/1-18I2C/

Кроме того, иногда может работать изменение рендерера на opengl. Это можно сделать следующим образом:

set(h,'Renderer','opengl');

Ответ 2

К сожалению, Windows имеет ограниченное количество графических ресурсов.

Вы можете проверить количество ресурсов с помощью Диспетчера задач, на вкладке "Процессы", щелкнув меню "Просмотр/Выбор столбцов" и пометить "Объекты GDI".

Затем вы можете увидеть количество графических объектов (GDI), используемых каждым процессом.

Максимальное количество объектов GDI на процесс составляет примерно 9900 объектов. Более того, процесс не сможет правильно их рисовать.

Ответ 3

В соответствии с этот поток, это может быть переключатель /3GB, который может быть установлен в 32-разрядных версиях Windows. У меня есть свой набор и получить ошибку backingstore, когда диспетчер задач показывает только 206 объектов GDI против Matlab.

Или это может быть связано с разными причинами в разных сценариях. Существует много способов исчерпать ресурсы.