在C#中,string是引用类型,每次动态创建一个string,c#都会在堆内存中分配一个内存用于存放字符串(包括字符串拼接、字符串分割等)。
解决方法有两种:
1.自建缓存机制,可以用一些标志性的Key值来一一对应字符串,比如游戏项目中常用ID来构造某个字符串,伪代码如下:
ResData data = GetDataById(Id); string strName = "xxxx" + data.Name;
可以用字典将strName缓存起来,用id当key,尝试复用。
2.用C#的一些“不安全”的native方法,也就是直接使用指针来改变string中字符串的值,这样就可以重复利用string,而不需要重新分配内存。
实现:将不用的字符串用长度当key缓存起来,要申请新的字符串的时候尝试从缓存里拿并通过指针将字符数组(字符串本质上还是字符数组)改成需要的值。
标签:缓存,string,C#,data,strName,字符串,优化 From: https://www.cnblogs.com/mcyushao/p/17920237.html