java类会占用多少内存?
String s="abc" 的占用是 28+24 = 52
?
要说的是,String是常用的类,这么看,String耗内存很多,所以jvm有优化,同样的内容尽量重用,所以除了28是必须的外,那个char[] 很可能一样
比方说
String[] s=new String[1000];
for(int i=0;i<1000;i++) {
s[i]=new String("abcdefasdjflksadjflkasdfj");
}
的占用的数量级是 28*1000,那 1000个字符串本身基本上不占内存,只有一份!!!!!!
反正String 至少是 28,最多也可能是28!!!!!!!!
?
?
比较占内存的数据结构,这个很重要:
基本上就是 primitive的包装
?
实例:
我以前用一个
Hashtable的结构,有100万个元素
改为String[]+int[]后,内存占用改观不少,速度也很快
100万的String[] 快排一下,也就2秒多,查找用2分,和hash也差不多少。