Здравствуйте. Подскажите пожалуйста, как очистить память Математики? Есть Clear и ClearAll, но так есть аргументы, что не удобно.
Есть еще ClearSystemCache[], но у меня не работает, все равно остаются в памяти значения переменных.
Как очистить память?
Модератор: Admin
Если вы аккумулировали ненужные вам значения в списке, то можно воспользоваться простой функцией Аладьева. Вызов ClearValues[x] возвращает пустой список, одновременно удаляя из текущего сеанса все переменные, имеющие значения из списка x. Привожу пример из конспекта мастер-класса автора. По моей информации готовится книга по этому курсу то ли у нас, то ли в Белоруссии или Украине. Может пригодиться для вашего случая.
In[1858]:= ClearValues[x_ /; ListQ[x]] := Select[Map[Remove, Select[Names["`*"], MemberQ[x, ToExpression[#]] &]], # != "Null" &]
In[1859]:= {a = 42, b = 75, c := 75, d = 450, h5 := 65, Kr = 16, Art = x + Sin[y]}
Out[1859]= {42, 75, Null, 450, Null, 16, x + Sin[y]}
In[1860]:= ClearValues[{42, 75, 75, 450, 65, 16, x + Sin[y]}]
Out[1860]= {}
In[1861]:= Names["`*"]
Out[1861]= {"ClearValues"}
In[1862]:= {a, b, c, d, h5, Kr, Art}
Out[1862]= {a, b, c, d, h5, Kr, Art}
In[1858]:= ClearValues[x_ /; ListQ[x]] := Select[Map[Remove, Select[Names["`*"], MemberQ[x, ToExpression[#]] &]], # != "Null" &]
In[1859]:= {a = 42, b = 75, c := 75, d = 450, h5 := 65, Kr = 16, Art = x + Sin[y]}
Out[1859]= {42, 75, Null, 450, Null, 16, x + Sin[y]}
In[1860]:= ClearValues[{42, 75, 75, 450, 65, 16, x + Sin[y]}]
Out[1860]= {}
In[1861]:= Names["`*"]
Out[1861]= {"ClearValues"}
In[1862]:= {a, b, c, d, h5, Kr, Art}
Out[1862]= {a, b, c, d, h5, Kr, Art}
Конечно есть, как и у всех достаточно развитых систем. см. ниже
In[1]:= x = 56; y := 78; {x, y}
Out[1]= {56, 78}
In[2]:= Exit[]
Out[1]= {x, y}
In[1]:= {x, y}
Out[1]= {x, y}
In[2]:= x = 56; y := 78; {x, y}
Out[2]= {56, 78}
In[3]:= Quit[]
In[1]:= {x, y}
Out[1]= {x, y}
Однако все зависит от того, что вам нужно. Если вы хотите привести сессию в исходное состояние, то см. выше, если же хотите это сделать частично, то см. еще выше. В целом же советую не работать со сложными средствами методом тыка, а изучить их хотя бы на начальном уровне.
In[1]:= x = 56; y := 78; {x, y}
Out[1]= {56, 78}
In[2]:= Exit[]
Out[1]= {x, y}
In[1]:= {x, y}
Out[1]= {x, y}
In[2]:= x = 56; y := 78; {x, y}
Out[2]= {56, 78}
In[3]:= Quit[]
In[1]:= {x, y}
Out[1]= {x, y}
Однако все зависит от того, что вам нужно. Если вы хотите привести сессию в исходное состояние, то см. выше, если же хотите это сделать частично, то см. еще выше. В целом же советую не работать со сложными средствами методом тыка, а изучить их хотя бы на начальном уровне.