У меня тут быстрый вопрос.Может кто-нибудь из них посоветует мне…
Я обнаружил некоторую утечку памяти с некоторыми элементами управления, когда использую ее в следующем случае.Чтобы повторить это, я просто подготовил простое консольное приложение, чтобы проверить это.Когда я определяю разные классы как «MyClass» и «Class1» в качестве альтернативы одному и тому же объекту «a».Число экземпляров продолжает увеличиваться с каждым разом, а предыдущий экземпляр не удаляется.Об этом можно уведомить с помощью некоторого профилировщика, например «Ants Profiler», с помощью следующей процедуры репликации.
Подсказка: нажмите c, чтобы продолжить.Это назначит следующий объект.
[Фрагмент кода]
namespace ConsoleApplication3
{
class Program : IDisposable
{
static void Main(string[] args)
{
object a;
string s;
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
// Take a memory snap shot here. We can see only one instance created for both class.
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
s = Console.ReadLine();
if (s == "c")
a = new Class1();
Console.WriteLine("a === Class1 ");
s = Console.ReadLine();
if (s == "c")
a = new MyClass();
Console.WriteLine("a ==== MyClass");
// Take a snap shot here multiple instance are created for both the class.
Console.WriteLine("End of the prog");
Console.ReadLine();
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
}
}
Пожалуйста, дайте мне знать, что это свойство свойства для определения класса.
Спасибо, Камаль.