# How to stop the Kernel from running wild?

How to abort or stop this (accidently large defined) SparseArray production?

s = N[SparseArray[Table[{2^i, 4} -> i, {i, 30}]]]


Alt+. or Alt+, seem to give up. Even your Windows task manager is struggling.

• Evaluation->Quit Kernel -> Local often succeeds where Abort Evaluation fails for me. Jan 13, 2013 at 16:42
• Jan 13, 2013 at 17:17
• Concerning the Task Manager statement: Although the TM struggles, and can take a minute or two to respond, I find that patience pays off: navigate to the [Processes] tab, right-click on the instance of Mathkernel.exe that is hogging all the RAM, and choose "end process." Each step can require a painfully long wait, but in the end it does work. Jan 13, 2013 at 19:12
• Another related question: mathematica.stackexchange.com/q/2789/5
– rm -rf
Jan 13, 2013 at 20:58

Could use $Pre to wrap things in MemoryConstrained. I'll illustrate with an unusually tight constraint. SetAttributes[memcon, HoldAll] memcon[new_] := MemoryConstrained[new, 10^4]$Pre = memcon;

ByteCount[Range[10^6]]
(* Out[4]= $Aborted *) s = N[SparseArray[Table[{2^i, 4} -> i, {i, 20}]]] (* Out[5]=$Aborted *)

• If you don't preclude the use of $Pre as I did in my earlier question this is an excellent method. I recommend it to anyone using version 7 or earlier. Belisarius gives a nice method for v8+ in the linked thread that does not tie up $Pre. Jan 14, 2013 at 1:14
• Another question would be: why does this fill up the memory at all? The array is very sparse with only a few elements. Is there a limit on the size of SparseArrays that's exceeded here? Jan 29, 2013 at 22:25
• @Szabolcs InputForm[SparseArray[Table[{2^i, 4} -> i, {i, 5}]]] seems to show a dense 1-d listwith the jth element indicating how many nontrivial elements have been seen prior to row j. That at least is my guess. Jan 29, 2013 at 22:42