110,536
社区成员
发帖
与我相关
我的任务
分享
class Person
{
string Name;
public Timer timer;
public Person(string s)
{
Name = s;
timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += timer_Elapsed;
timer.Start();
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine(Name);
}
}
class Program
{
static void Main(string[] args)
{
Person b = new Person("张三");
b = new Person("李四");
Console.ReadKey();
}
}
class Person
{
string Name;
public Timer timer;
public Person(string s)
{
Name = s;
timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += timer_Elapsed;
timer.Start();
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine(Name);
timer.Dispose()
}
}
class Program
{
static void Main(string[] args)
{
Person b = new Person("张三");
b = new Person("李四");
Console.ReadKey();
}
}
class Program
{
static void Main(string[] args)
{
MyClass b = new MyClass();
b.xxxEvent += B_xxxEvent;
b.dotest();
Task.Run(async () =>
{
while (true)
{
b = new MyClass();
b.xxxEvent += B_xxxEvent;
b.dotest();
await Task.Delay(TimeSpan.FromSeconds(1));
}
});
Console.ReadKey();
}
static List<object> lst=new List<object>();
private static void B_xxxEvent(object sender, EventArgs e)
{
lst.Add(sender);
}
class MyClass
{
private Guid id { get; set; }=Guid.NewGuid();
//这里分配一个中型内存对象,以便观察gc释放情况
public byte[] buffer=new byte[1024*40*40];
public event EventHandler xxxEvent;
public MyClass()
{
}
public void dotest()
{
xxxEvent?.Invoke(this,new EventArgs());
}
}
}
现在在来看,你会发现内存只增不减,why?因为那个lst还用着呢,他永不释放 class Program
{
static void Main(string[] args)
{
MyClass b = new MyClass();
b.xxxEvent += B_xxxEvent;
Task.Run(async () =>
{
while (true)
{
b = new MyClass();
b.xxxEvent += B_xxxEvent;
await Task.Delay(TimeSpan.FromSeconds(1));
}
});
Console.ReadKey();
}
private static void B_xxxEvent(object sender, EventArgs e)
{
throw new NotImplementedException();
}
class MyClass
{
private Guid id { get; set; }=Guid.NewGuid();
//这里分配一个中型内存对象,以便观察gc释放情况
public byte[] buffer=new byte[1024*40*40];
public event EventHandler xxxEvent;
public MyClass()
{
}
}
}