ヒープ サイズを設定しているときに、人々が値 64,128,256,1024 を好むことを確認しました。これらの数値の間の値 (たとえば 500) を指定すると、JVM はその値を受け入れませんか? なぜこれらの数字が重要で好まれるのでしょうか? このパターンで RAM もアップグレードするのはなぜですか?
理解するのを手伝ってください。
JVM は任意の値を受け入れますが、問題はありません。2^n 値を使用することは単なる「慣例」であり、他の値を使用しても実際には悪影響はありません。
まあ、こう考えると。
1バイトは8ビット
1kb = 1024 バイト
1MB = 1024KB
1GB = 1024MB
... 等々 ...
それだけではありません2^n
。コンピューティングにおけるメモリに関する事柄は、最近のほとんどのコンピューターで 1 バイトを定義する数字である 8 と密接に関連しています。
ビットがグループ化される主な理由は、文字を表すためです。コンピューティングはすべて 2 進数であるため、ビットの理想的な「塊」は 2 の累乗になり1, 2, 4, 8, 16, 32...
ます。(基本的に、それらは常により小さな等しいパッケージに分割できるためです(サイズを保存するためのショートカットも作成されますが、それは別の話です))。明らかに、4 ビット (一部の円ではニブル) で 2^4 または 16 の一意の文字が得られます。ほとんどのアルファベットはこれよりも大きいため、2^8 (または 256 文字) がより適切な選択です。
他の長さのバイト (特に 7 または 9) を使用したマシンが存在します。これは、主に操作が簡単ではないため、実際には生き残っていません。確かに、奇数を半分に分割することはできません。つまり、バイトを分割する場合は、ビット文字列の長さを追跡する必要があります。
最後に、8 も便利な数です。多くの人 (心理学者など) は、人間の心は一般に (記憶のトリックを使わずに) すぐに思い出せるのは 7 ~ 8 個のことだけだと主張しています。
このパターンで RAM もアップグレードする理由。
これは、メモリ チップ/カード/のサイズが 2 バイトの累乗であるためです。その根本的な理由は、電子機器がよりシンプルになるということです。シンプルであるということは、より安価で信頼性が高く、(おそらく) 高速であることを意味します。
書かれていない規則を除いて、マシンのアーキテクチャに応じて、パフォーマンスへの影響もあります。
たとえば、マシンが 3 進数ベースの場合、ヒープ サイズを 3 のべき乗の値に設定するとうまく機能します。
If it won't accept the value, check whether you put a megabytes
(M or m) or gigabytes
(G or g) modifier after the amount.
Example: java -Xms500M -Xmx500M -jar myJavaProgram.jar
Also, take a look at this link.