まめ畑

ゆるゆると書いていきます

ちょっと気になったので

javaにはStringってクラスがあるけど、こいつっていったいどこまで文字を抱えてくれるのかとふと思った。

なので、ためしてみたよ。

ヒープの量に関係するので、JavaVMに割り当てるメモリの量を変化させて、その時のStringが抱え込んでいる文字数と増加率を出してみた。

まずは試したコード。
シンプルイズベストも甚だしいほどのコード。これでちゃんと計れるの?なんて聞かないでね。。。

public class stringTest{
	public static void main(String[] args){
	   String moji = "あいうえお";
		while(true){
		   moji += moji;
		   System.out.println(moji.length());
		}
	}
}

さて、結果はこうなったよ。

割り当てメモリ(Mbyte) 文字数 倍率
8 1312720
16 2621440 1.996952892
32 5242880 2
64 10485760 2
128 20971520 2
256 41943040 2
512 83886080 2
1024 167772160 2

メモリの割当量が2倍になれば文字数も2倍になるのね。
今回は文字数だけしか考慮しないからこの値で、もっとロジックが書かれると少なくなるんだろうな。
それにしても、Stringって意外と力持ちなんだなぁ。
まぁ、Stringはオブジェクトなんだからメモリの許す限りもてるんだけどね。
ちょっと明確化。