PowerShell 中的处置和清理 - 手动还是自动?
Disposal and cleanup in PowerShell - manual or automatic?
在过去的几个月里,我一直在大量使用 PowerShell。不得不说,这让我很吃惊。我认为只是过度膨胀的 CMD 版本实际上是一种非常健壮、面向对象和多功能的 .NET 语言。
我之前在语言方面的经验(全部自学)是 Java、C++ 和 Wiring(C++ 的淡化 Arduino/Particle 变体),其中很多是在受限环境中 (合作社)。在受限的嵌入式环境中工作使我更加了解内存处理和分配*。如果您的系统资源有限,如果不加以控制,内存泄漏可能是毁灭性的。
尽管如此,我不确定 PowerShell 是否直观地处理内存分配和处置。因为它是一种高级语言,所以在幕后处理这些是有道理的,但我想确定一下。我看到一个 PowerShell 脚本,当它完成特定的 $object
.
时,它实际上调用了 $object.Dispose()
那么,我是否需要为我创建的每个 New-Object
调用一个 Dispose()
方法?
谢谢!
*我知道,与计算机或服务器等信息系统相比,ATMega328P 微控制器(30kb ROMkb RAM)等系统存在巨大差异,但是,如果留在持久性 运行-state,内存泄漏加起来很可能导致崩溃。另外,我知道会话结束后所有内容都会被转储。
这不是必需的,但它仍然是一种很好的做法。没有它,PowerShell 仍会在您之后进行清理,但可能需要相当长的时间。当然,只要您的代码持有对它们的引用,对象就不会被自动处置。
.
在过去的几个月里,我一直在大量使用 PowerShell。不得不说,这让我很吃惊。我认为只是过度膨胀的 CMD 版本实际上是一种非常健壮、面向对象和多功能的 .NET 语言。
我之前在语言方面的经验(全部自学)是 Java、C++ 和 Wiring(C++ 的淡化 Arduino/Particle 变体),其中很多是在受限环境中 (合作社)。在受限的嵌入式环境中工作使我更加了解内存处理和分配*。如果您的系统资源有限,如果不加以控制,内存泄漏可能是毁灭性的。
尽管如此,我不确定 PowerShell 是否直观地处理内存分配和处置。因为它是一种高级语言,所以在幕后处理这些是有道理的,但我想确定一下。我看到一个 PowerShell 脚本,当它完成特定的 $object
.
$object.Dispose()
那么,我是否需要为我创建的每个 New-Object
调用一个 Dispose()
方法?
谢谢!
*我知道,与计算机或服务器等信息系统相比,ATMega328P 微控制器(30kb ROMkb RAM)等系统存在巨大差异,但是,如果留在持久性 运行-state,内存泄漏加起来很可能导致崩溃。另外,我知道会话结束后所有内容都会被转储。
这不是必需的,但它仍然是一种很好的做法。没有它,PowerShell 仍会在您之后进行清理,但可能需要相当长的时间。当然,只要您的代码持有对它们的引用,对象就不会被自动处置。