是否有类似于MATLAB中的“clear”的语法,即如果我有一个全局变量“a”,如何摆脱它?如何执行相应的操作?
clear a
是否有类似于MATLAB中的“clear”的语法,即如果我有一个全局变量“a”,如何摆脱它?如何执行相应的操作?
clear a
查看此问题的最新答案,请转至此链接:https://docs.julialang.org/en/v1/manual/faq/#How-do-I-delete-an-object-in-memory%3F
从文档中获得:
Julia 没有像 MATLAB 的 clear 函数那样的类比;一旦在 Julia 会话(技术上是在模块 Main 中)中定义了名称,它就一直存在。
如果内存使用是您关心的问题,您可以始终将对象替换为消耗更少内存的对象。例如,如果 A 是一个占用几个 GB 的数组,而您不再需要它,您可以使用 A = 0 释放内存。内存将在下一次垃圾回收运行时被释放;您可以使用 gc() 强制执行垃圾回收。
在 Julia 0.6 中,您可以通过调用 clear!()
来删除变量并释放其内存。
您必须在变量的符号名称上调用 clear!:
julia> x = 5
5
julia> sizeof(x)
8
julia> clear!(:x)
julia> sizeof(x)
0
正如DFN所指出的那样,这实际上不会删除对象,而是将它们设置为nothing
。这对于释放工作区内的内存非常有用,因为您可以“删除”非常量对象的内存占用。
在Julia 1.0+中无法使用此方法。如果您正在使用1.0+版本,则必须将对象设置为Nothing
,然后让垃圾收集器处理。
这来自官方文档,点击此处查看。
nothing
。例如,您不能执行 julia> const x = 3
,因为那样会得到 ERROR: cannot declare x constant; it already has a value
的错误。 - DNFERROR: UndefVarError: clear! not defined
的错误。 - Dima LituievNothing
而不是单例实例 nothing
,这很有趣,你这么做有什么特别的原因吗? - Jonas Eschmann目前还不支持该功能。但是,有一个问题需要跟踪:
exit()
有什么问题吗?谢谢。 - PatrickT针对 Julia-0.6.4 版本,
clear!(:x)
如@niczky所说,它正在工作,并且在iJulia中运行。
但是,对于Julia-1.0.0版本,
clear!(:x)
... 抛出以下异常:
ERROR: UndefVarError: clear! not defined
Stacktrace:
[1] top-level scope at none:0
所以,它在Julia-1.0.0中出现故障。