为什么 PowerShell 5 中的最大变量数是 4096
Why is the maximum variables count 4096 in PowerShell 5
只是为了好玩我运行那个代码:
for ($i = 0; $i -le 9999; ++$i) { New-Variable $i $i -ErrorAction Stop }
PowerShell 5.1 返回:
New-Variable : Cannot create variable 4073 because variable capacity 4096 is exceeded for this scope.
但在 PowerShell 7.0.3 中,我更改了 for
以创建 1 毫 变量。
我已经厌倦了等待......并在 pwsh
占用了我的 7 Gb RAM 时取消了它......
$i
那一刻是 18,401,068!
意思是PS7.0.3对变量个数没有限制或者很高
那么为什么 4096 个变量在 PS 5.1 中有限制?
So why is there limit for 4096 variables count in PS 5.1?
因为有人在某个时候认为这是个好主意。就是这样。
可能有人添加了它,因为 PowerShell 中的变量操作非常昂贵并且内存效率不高。也许其中一位开发人员 运行 在测试期间出现了一个与您的循环非常相似的循环,它耗尽了他机器上的所有内存,这似乎是一个简单的权宜之计。我们可能永远不会知道。
我们可以从公开信息中得知,limitation was removed long before PowerShell Core 6.0 的 GA 版本 - 正是因为没有充分的理由保留它。
只是为了好玩我运行那个代码:
for ($i = 0; $i -le 9999; ++$i) { New-Variable $i $i -ErrorAction Stop }
PowerShell 5.1 返回:
New-Variable : Cannot create variable 4073 because variable capacity 4096 is exceeded for this scope.
但在 PowerShell 7.0.3 中,我更改了 for
以创建 1 毫 变量。
我已经厌倦了等待......并在 pwsh
占用了我的 7 Gb RAM 时取消了它......
$i
那一刻是 18,401,068!
意思是PS7.0.3对变量个数没有限制或者很高
那么为什么 4096 个变量在 PS 5.1 中有限制?
So why is there limit for 4096 variables count in PS 5.1?
因为有人在某个时候认为这是个好主意。就是这样。
可能有人添加了它,因为 PowerShell 中的变量操作非常昂贵并且内存效率不高。也许其中一位开发人员 运行 在测试期间出现了一个与您的循环非常相似的循环,它耗尽了他机器上的所有内存,这似乎是一个简单的权宜之计。我们可能永远不会知道。
我们可以从公开信息中得知,limitation was removed long before PowerShell Core 6.0 的 GA 版本 - 正是因为没有充分的理由保留它。