Pau*_*tto 5 c# memory-management global-variables
我正在使用Microsoft Visual C#2010.我有几种方法使用大位图进行本地处理,并且可以多次调用每个方法.
我可以声明一个全局变量并重用它:
Bitmap workPic, editPic;
...
void Method1() {
workPic = new Bitmap(editPic);
...
}
void Method2() {
workPic = new Bitmap(editPic.Width * 2, editPic.Height * 2);
...
}
Run Code Online (Sandbox Code Playgroud)
或者在每个方法中声明一个局部变量:
Bitmap editPic;
...
void Method1() {
Bitmap workPic = new Bitmap(editPic);
...
}
void Method2() {
Bitmap workPic = new Bitmap(editPic.Width * 2, editPic.Height * 2);
...
}
Run Code Online (Sandbox Code Playgroud)
第二种方法更适用于代码清晰度(局部使用的局部变量).资源利用方面有区别吗?
如果您打算保留分配给您的workPic方法之后可以再次使用的内存,您应该将其注册为类变量。如果没有,您可以通过让它超出范围来释放内存(总是一个好主意)。
分配一个变量对于管理内存的框架来说并不重要。仅当您在紧密循环内重新创建变量时,您才可以通过重用该变量受益。如果您有基本类型,您甚至可以重用相同的内存。否则,仅保留对已分配内存的引用,因此您不会从中获得太多好处。
请注意,这对Dispose您来说非常重要workPic,因为现在您在后面的非托管内存中存在内存泄漏Bitmap。最好使用using.
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |