托管内存泄漏检测 - C#
Managed memory leak detection - C#
如何检测 C# 代码中的托管内存泄漏?
它是关于使用 openGL 渲染 3D 对象的 windowsform 应用程序。每次我重绘时都会发生内存泄漏。
根据DebugDiag tool的分析,"C:\Windows\System32\ig75icd32.dll"是内存泄漏的根源。
这是 openGL 还是我的代码中的错误?我该如何解决这个问题?
找到内存韭菜源了。这是因为 opneGL 列表。
在我的一部分代码中,我为每个 3D 对象都有这个代码
void UpdateList(){
_List = Gl.glGenLists(1);
Gl.glNewList(_List, Gl.GL_COMPILE);
Polygons.Draw();
Gl.glEndList();
}
这是一个循环(对象的列表在循环中更新)。为每个 3D 对象生成了如此多的列表,并且有许多活着的对象。我像这样更改了代码
void UpdateList(){
if(_List==-1)
_List = Gl.glGenLists(1);
Gl.glNewList(_List, Gl.GL_COMPILE);
Polygons.Draw();
Gl.glEndList();
}
因此每个 3D 对象只生成一个列表 handel。
如何检测 C# 代码中的托管内存泄漏? 它是关于使用 openGL 渲染 3D 对象的 windowsform 应用程序。每次我重绘时都会发生内存泄漏。
根据DebugDiag tool的分析,"C:\Windows\System32\ig75icd32.dll"是内存泄漏的根源。
这是 openGL 还是我的代码中的错误?我该如何解决这个问题?
找到内存韭菜源了。这是因为 opneGL 列表。
在我的一部分代码中,我为每个 3D 对象都有这个代码
void UpdateList(){
_List = Gl.glGenLists(1);
Gl.glNewList(_List, Gl.GL_COMPILE);
Polygons.Draw();
Gl.glEndList();
}
这是一个循环(对象的列表在循环中更新)。为每个 3D 对象生成了如此多的列表,并且有许多活着的对象。我像这样更改了代码
void UpdateList(){
if(_List==-1)
_List = Gl.glGenLists(1);
Gl.glNewList(_List, Gl.GL_COMPILE);
Polygons.Draw();
Gl.glEndList();
}
因此每个 3D 对象只生成一个列表 handel。