2010-11-30 11 views
1

IN JAVAchar []の最大サイズはありますか?

char []の最大サイズはありますか?私はchar [5,000,000]を持てますか?

Javaの配列は連続したメモリブロックで構成されていますか?

+0

[Java:配列に最大サイズがありますか?](0120-919-066) – ColinD

+1

許容される回答その質問には間違っています...最大サイズは 'Integer.MAX_VALUE - 5'と思われます。 – ColinD

答えて

5

あるインデックスがint型基づいているので、配列の最大サイズにInteger.MAX_VALUE

されるべきだと思います

明らかにもう1つの制限は、アプリケーションで使用可能なメモリ量です。

+0

大きなものが4ギガバイトであるため、JVMで制約が追加される場合があります。 – JeremyP

+0

@JeremyP - 実装は異なる可能性がありますが、インターフェイスはかなり制限されています – willcodejavaforfood

+0

Integer.MAX_VALUEは(1 << 31)-1ではありません(1 << 32) –

1

JVMのヒープサイズが制限されています。

@wildcodeforjavaはINTを挙げるように、これまで小さいをアレイ

をinitilizingながらparemeterあります。

0

はい、はい私の知る限り、私は、javaのmaxは約2,000,000,000 2 * 10E9

+0

Integer.MAX_VALUE、または(1 << 31)-1 –

2

最大サイズはアーキテクチャによって異なります。

Cでは、アレイは連続したメモリブロックで構成されています。 RAM(ディスクベースの仮想メモリを含む)に収まる限り、必要に応じて大きな配列を持つことができます。例外があります:ローカル変数として宣言された配列はスタックに割り当てられますが、これは非常に小さいです。 PC上のマルチスレッドアプリケーションにおけるスタックの典型的なサイズは1メガバイトになります。大きな配列が必要な場合は、グローバル変数として作成するか、動的に割り当てます(malloc())。

Javaでは、配列はヒープ割り当てされています(new)。それらが連続しているかどうかは「あなたのビジネスのどれも」ではありません.Javaの本質はプログラマーを具体的な実装の詳細から保護することです。(実際はほとんどのJava仮想マシンでは配列は連続しています。 Java配列は、intタイプで表現された値で作成および索引付けされます。したがって、マシンにそれ以上のRAMがあっても、Java配列は約2億を超える要素を持つことはできません。intは大きな値を保持できません。 5百万はケーキです。私はそれよりも大きな配列を日常的に割り当てます。

+0

偉大な情報ありがとう:) – Scicare

-1

Javaのcharが2バイトであるため、2147483647の配列インデックスは最大3 GB(1024バイト= 1 KBに基づく)を消費できます。

+0

この情報は面白いですが、これは質問に答えないので、(あなたが特権を持っているときに)コメントでこれらを制限しようとします。 – Docteur

関連する問題