如果你用托管堆管理内存,那内存的释放只能依靠GC来处理。如果你想绕过GC,那你只有编写unsafe的代码,绕过托管堆,自己管理。
如果你希望快速释放内存,用 StringBuilder 比用String 要好,不过StringBuilder 的功能比String 要弱很多。
另外你还可以调用 GC.Collect() 通知GC强行释放内存。不过GC是不是听你的话不一定。
我也一直被这个问题困惑.
String是引用类型,在托管堆中,又没有带释放内存的方法.每次复制都会新建一个String对象.也许真的只能手动强行调用垃圾回收吧.或者想办法用StringBuilder??
关注学习
不用管他,当内存占用到一定程度的时候,GC会负责把你已经用过的并且肯定不会再用的变量全部回收
不要尝试对其进行任何处理,那只会更糟糕,string是比较特殊的对象,完全相同的string在内存中只被存入一个地址,不管你是如何创建的,所以对于频繁使用的字符串,会有一定缓存作用。
不需要的字符串等垃圾回收器自动处理就可以了。
如果需要节省内存,那么你应该在源头杜绝滥用情况,尽量减少字符串拼凑,转而尽可能多地使用StringBuilder。
如果真的想去减少程序使用内存,可以找找以往的一些强制清理内存的手段,但那些都不推荐使用,用来用去其实是在普遍降低程序性能。
up