Como evitar falhas do MATLAB ao abrir muitas figuras?

s vezes, inicio um script do MATLAB e percebo tarde demais que ele produzirá números demais. Eventualmente, recebo um

Exceção no encadeamento "AWT-EventQueue-0" java.lang.OutOfMemoryError: espaço de heap Java

que pode ser facilmente reproduzido na minha máquina usando

for i=1:inf
  figure;
end

Chego a cerca de ~ 90 dígitos antes de falhar com a configuração padrão Preferences / Java Heap Memory) de heap Java de 128 MB, enquanto duplicar o heap para 256 MB me dá cerca de 200 número

Você vê alguma maneira deevita a mensagem de erro do Java? Se não houver memória suficiente para outra figura, gostaria que meu script fosseconto em vez de travar.

Talvez eu pudesse ter um invólucro parafigure que (de alguma forma?) verifica a quantidade de heap Java disponível e que se recusa a abrir uma nova figura se não houver espaço suficient

Atualiza

Usando as respostas abaixo, recebo um bom gráfico sobre a quantidade de memória Java livre disponível:

Este foi produzido usando

for i=1:inf
    java.lang.Runtime.getRuntime.gc
    fprintf('%3.0f: %1.0f Byte free\n',i,java.lang.Runtime.getRuntime.freeMemory);
    figure;
end

Suponho que o aumento no início signifique que a coleta de lixo só faz um certo esforço toda vez que eu o chamo?

Update 2 - minha solução

Usando a ajuda que recebi aqui, implementei a seguinte solução como umfigure.m que sobrecarrega e chama o build-infigure comando:

function varargout=figure(varargin)
memcutoff = 10E6; % keep at least this amount of bytes free
memkeyboard= 3E6; % if memory drops below this, interrupt execution and go to keyboard mode
global refuse_new_figures
if refuse_new_figures
    warning('jb:fig:lowjavamem2','Java WAS memory low -> refusing to create a new figure. To reset, type "global refuse_new_figures ; refuse_new_figures = [];"');
    return
end
freemem=java.lang.Runtime.getRuntime.freeMemory;
if freemem < memcutoff 
    fprintf('Free memory is low (%1.0f Bytes) -> running garbace collector...\n',freemem);
    java.lang.Runtime.getRuntime.gc
end
freemem=java.lang.Runtime.getRuntime.freeMemory;
% fprintf('Free memory is %1.0f Bytes.\n',freemem);
if freemem < memkeyboard
    warning('jb:fig:lowjavamem','Java memory very low -> going into interactive mode. Good luck!');
    keyboard;
end
if freemem < memcutoff
    warning('jb:fig:lowjavamem','Java memory low -> refusing to create a new figure!');
    refuse_new_figures=true;
else
    if nargin > 0
        if nargout > 0
            varargout{1}=builtin('figure',varargin{:});
        else
            builtin('figure',varargin{:});
        end
    else
        if nargout > 0
            varargout{1}=builtin('figure');
        else
            builtin('figure');
        end
    end
end

questionAnswers(3)

yourAnswerToTheQuestion