Ребята, подскажите, что делаю не так?
Сделал класс
Test_Entity, для того чтобы создать
динамически коллекцию примитивов.
namespace psm_cfunc {
public class Test_Entity {
public List<Entity> Ents; // Список отрезков
// Создание набора отрезков
public void test_create_lines() {
Ents = new List<Entity>();
int NE = 100000;
for (int i = 0; i < NE; i++)
this.Ents.Add(new Line(new Point3d(0, 0, 0),
new Point3d(1, 1, 0)));
}
~Test_Entity() {
for (int i = 0; i < Ents.Count(); i++) // наверное этот цикл вообще лишний???
this.Ents[i] = null;
this.Ents.Clear();
this.Ents = null;
}
}
// Два тестовых метода для создания и уничтожения объектов.
public class c_psm_functions {
// объект класса объявлен глобально.
public static Test_Entity TE = new Test_Entity();
public static void Createlines()
{
TE.test_create_lines();
}
public static void Freelines()
{
TE = null;
// Вызов сборщика мусора
GC.WaitForPendingFinalizers();
GC.Collect();
}
} // End class c_psm_functions
} // End namespace
Получается следующее:
1) Сначала AutoCAD 2012 в ОЗУ занимает 77М
2) После создание набора отрезков 177М
3) После высвобождения и очистки коллекции 120 М (Почему память не вернулась хотя бы к 80М?)
Получается я взял 100М а вернул только 50М
Вызов методов делаю в проекте на VB
Imports CAD_RTM = Autodesk.AutoCAD.Runtime
<CAD_RTM.CommandMethod("PSM_CL")> _
Public Sub COMM_CreateL()
psm_cfunc.c_psm_functions.Createlines()
End Sub
<CAD_RTM.CommandMethod("PSM_FL")> _
Public Sub COMM_FreeL()
psm_cfunc.c_psm_functions.Freelines()
End Sub