お世話になります。シンプルな質問のため短いですが、下記について知りたいと思っております。
- PowerShellの配列・オブジェクトの要素数に、言語仕様上の上限はありますか? あるならばそれは幾つですか?
- 上限がわかるドキュメントや記事がありますか?(Microsoftのドキュメントが望ましいのですが、ネット上の検証記事等でも構いません)
以上、お分かりになるようでしたらご教示いただけますと幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
PowerShellは.NETベースなので、.NETの仕様に引っ張られますというか実態は.NETオブジェクトです。
https://stackoverflow.com/questions/1337810/are-powershell-arrays-just-net-arrays
PS> $string_list = @() PS> ,$string_list | Get-Member TypeName: System.Object[]
https://docs.microsoft.com/en-us/dotnet/api/system.array?view=net-6.0#remarks
によると
配列のサイズは合計 40 億の要素に制限されており、特定の次元の最大インデックスは 0X7FEFFFFFF (バイト配列およびシングルバイト構造体の配列の場合は 0X7FFFFFC7) です。 .NET Framework のみ:既定では、配列の最大サイズは 2 ギガバイト (GB) です。64 ビット環境では、ランタイム環境でgcAllowVeryLargeObjects構成要素のenabled属性を に設定することにより、サイズ制限を回避できます。true
ということなんで40億個(設定しなければ2GB)じゃないでしょうか。
PowerShellの言語使用上は明確に記載はないですが、
Count または Length または LongLength 配列内の項目の数を確認するには、プロパティまたはそのCountエイリアスをLength使用します。 Longlength は、配列に 2,147,483,647 を超える要素が含まれている場合に便利です。
ということなんでPowerShell側のリミットはなさそうというか最低でも2,147,483,647個扱えることは間違いないでしょう。
オブジェクト(要素数?)をハッシュテーブルのことだと解釈するとこちらは設定したら20億個までいけるそうです。
(設定していない場合の制限は書いていない、たぶん2GBかな)
PowerShell では、各ハッシュ テーブルは Hashtable (System.Collections.Hashtable) オブジェクトです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.hashtable?view=net-6.0#remarks
.NET Frameworkのみ: 非常に大きなHashtableオブジェクトの場合、構成要素の属性 <gcAllowVeryLargeObjects>を実行時環境に設定enabledすることで、64 ビット システムで最大容量を 20 億要素にtrue増やすことができます。
バイト配列や文字列はまた違う制限があるらしい
https://docs.microsoft.com/ja-jp/dotnet/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element#remarks
バイト配列および 1 バイト構造体の配列の場合、単一次元の最大サイズは 2,147,483,591 (0x7FFFFFC7) です。その他の型を含む配列の場合は 2,146,435,071 (0X7FEFFFFF) です。 文字列およびその他の非配列オブジェクトの最大サイズは変更されません。
https://docs.microsoft.com/ja-jp/dotnet/api/system.string?view=net-6.0#remarks
メモリ内のオブジェクトの String 最大サイズは、2 GB または約 10 億文字です。
投稿2022/08/20 19:27
総合スコア2703
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/21 08:49 編集