日期:2014-05-17  浏览次数:20917 次

多线程与方法的调用的一个疑惑
有几十个线程调用一个方法

方法:


public void aaa( string htmlStr)
  {
   string newStr="";
  }



由于每个线程都会调用方法,每调用一次就创建一个 newStr 内存空间

那么 如果几十个线程运行一天,这是不是会造成内存完全被占用的后果呢?


------解决方案--------------------
不会。
string newStr是一个局部变量,在函数退出之后就没有用了,可以被gc回收掉。
------解决方案--------------------
内存不足,GC会回收,不用担心
------解决方案--------------------
一样会回收,gc.Colect会在一个单独的线程中运行,如果内存不足,这个线程就会启动并且高优先级,

引用:
如果人家方法会执行很久呢、回收个毛线啊

------解决方案--------------------
一样的,newStr离开aaa方法后就没有引用:
C# code?1234public void aaa( string htmlStr)  {   string newStr=new string();  }

这个也是同理吗?