В Mathematica 8 вы можете запустить сторожевой таймер памяти, что-то вроде:
maxMemAllowed = 15449604;
intervalBetweenTests = 1; (*seconds*)
iAmAliveSignal = 0;
Dynamic[iAmAliveSignal]
RunScheduledTask[
If[MemoryInUse[] > maxMemAllowed , Quit[], iAmAliveSignal++],
intervalBetweenTests];
Не забудьте запустить
RemoveScheduledTask[ScheduledTasks[]];
чтобы отключить его.
Редактировать
Вы можете предупредить или в интерактивном режиме решить, что делать, прежде чем выйти.
Как и просили, вот пробная версия с 1,3 ГБ. Я не могу пойти намного дальше, чем в этой машине.
maxMemAllowed = 1.3 1024^3; (*1.3 GB*)
intervalBetweenTests = 1; (*Seconds*)
iAmAliveSignal = 0;
leyendToPrint = "";
Dynamic[leyendToPrint]
RunScheduledTask[
If[MemoryInUse[] > maxMemAllowed,
CreateDialog[CancelButton["Max Mem Reached", DialogReturn[]]];
Quit[],
Print["Memory in use: ", MemoryInUse[]];
leyendToPrint =
"Seconds elapsed = " <> ToString[iAmAliveSignal++]],
intervalBetweenTests];
IntegerPartitions[320, {15}];
