C# 内存分配, 如类Test有50个方法,20个全局变量

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:39:16
那么当 Test t = new Test();
会为所有的方法和变量分配内存吗
另一个问题,关于B/S结构,采用asp.net.
public class StringOper
{
public static StringOper Instance = new StringOper();
public string Test(string src)
{
string re = src; // line1
re = result.Substring(0, 3); // line2
return re; // line3
}
}

public class WebCustomerPage : Page
{
Page_Load(object sender, EventArgs e)
{
string src = "test123";
string result = StringOper.Instance.Test(src);
}
}

假设网站同时有n个人在访问,那么这段程序是否有问题?
如果A用户在执行line3时, B用户刚好执行line1 ?

1.对于任意C#或者Java的内,使用new方法创建实例时,类的字段成员会存放在一个内存空间,堆,而方法(函数)就会放在一个内存中代码区,直到调用时再送入运行时内存。
2.Instance是静态变量,即在类被加载一刻已经通过new操作创建一个新对象。但在运行时整个生命周期不会再创建新象,所以A用户和B用户调用的将会是同一个对象。如果只是象上述的简单操作是不会有问题,因为后一个用户执行时不会终断前一个用户的执行,所以用户会继续输出直到完成操作。但如果有其它数据的操作,就尽量不要在Web中使用单例的写法。

如果不是多线程的话 那么多个用户同时进来的时候 要在队列中排队 然后一个个处理 所以不会出现问题

如果是多线程的话 多个用户进来的时候 通过并发控制 并发执行 就要小心了

需要对共享的资源锁定解锁等控制

你写的这个程序 我人为 A用户和B用户不会发生冲突
应为他们获得的是不通的对象