.net中的字符串都是常量化的,字符串对象就是个引用。
我做了一个蛮大的字符串数组(二十几万吧)来存一些地名什么的,北京、上海、广州之类的,有时候还会对数组进行copy之类的操作,在32位下没啥,但在64位下内存涨了好几倍,dump后一看,字符串数组十几个,每个查到最后就是这些地名...
猜想64位下,一个字符串的内容,不过也就是4~6个字节,一个指针倒要8字节,指针比数据还大的情况下,保存这些零碎字符串实在是很不合算。
各位有啥好的方法来解决这个问题?
8 个解决方案
#1
把所有字符串按顺序存放到字节数组中,再用一个无符号整型数组记录每个字符串的开始位置,读取字符串的时候从字节数组中读取出这个字符串的字节数,转换为字符串,不知道这样内存会不会好一些。
#2
但是,如果使用字节数组,要用字符串的时候,还需要转换回来,如果使用频繁,这个上面消耗也很严重呀?
#3
使用字典树。
#4
有几个中文的字串数组,中文也能用字典树?
#5
既然这么占内存
在不用的时候就应该释放
况且还有指针
在不用的时候就应该释放
况且还有指针
#6
关注一下这个问题
#7
将字符串数组中的字符串每n(n根据情况自己定)个拼接成一个字符串,将重新拼接的字符串再保存到新的字符串数据。
#8
#1
把所有字符串按顺序存放到字节数组中,再用一个无符号整型数组记录每个字符串的开始位置,读取字符串的时候从字节数组中读取出这个字符串的字节数,转换为字符串,不知道这样内存会不会好一些。
#2
但是,如果使用字节数组,要用字符串的时候,还需要转换回来,如果使用频繁,这个上面消耗也很严重呀?
#3
使用字典树。
#4
有几个中文的字串数组,中文也能用字典树?
#5
既然这么占内存
在不用的时候就应该释放
况且还有指针
在不用的时候就应该释放
况且还有指针
#6
关注一下这个问题
#7
将字符串数组中的字符串每n(n根据情况自己定)个拼接成一个字符串,将重新拼接的字符串再保存到新的字符串数据。