tytang

于是我就走上了我.net的这条路。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

原文地址:http://kb.cnblogs.com/page/102225/

需要记住的几个点:

1、

string a ="hello";

string b = "hello";

a,b是指向同一个内存地址的。

而对字符串的操作,是返回一个新的字符串就是新的内存地址,原来那个到死都不会变。

2、

驻留池存的是再代码中字面声明的字符串实例的引用。

这时候可以用string.intern来检索通过非字面声明的字符串实例中的字符串是否已经存在了驻留池中。如果存在就返回驻留池的,如果不存在就新建一个再返回。

intern使用场合:

 当您的程序中存在某个方法,可以根据不同的上下文环境创建并返回一个很长的字符串,而在程序运行的过程中它有会经常返回同样的字符串时,您可能就要考虑考虑使用Intern方法来提高内存的利用率了。

驻留池的好处:

简单地说他的好处就是返回驻留池里面那个字符串引用,虽然没节省空间,用来做参数那份依然存在。不过随着时间流逝他就慢慢被回收了。

驻留池的坏处:

不过同样值得注意的是,使用Intern方法让一个字符串存活于驻留池中也有一个副作用:即使已经不存在任何其它引用指向驻留池中的字符串了,这个字符串仍然不一定会被垃圾回收掉。也就是说即使驻留池中的字符串已经没有用处了,它可能也要等到CLR终结时才被销毁。当您使用Intern方法的时候,也应该考虑到这个特殊的行为。

这里看不懂。以后有感悟了再回头看看。

posted on 2011-07-13 10:45  tytang  阅读(327)  评论(0)    收藏  举报