![]() |
1
3
我会考虑何时使用 Finalizer 了解 Large Object Heap 可能有一些好处,因为这可能会导致问题。 http://techiemate.blogspot.com/2009/04/garbage-collection-in-net.html |
![]() |
2
14
|
![]() |
3
2
使用垃圾收集器的最佳方法是。。。 别想用它!
|
![]() |
4
1
GC不像你在C++中定义的析构函数。也就是说,您不需要定义它和释放以前分配的内存。GC的关键是它是自动的。 我的建议是给我们更多关于你想做什么/理解什么的信息,因为这听起来不安全。 |
![]() |
5
1
为了使GC更简单,请始终对任何支持IDisposable接口的对象调用Dispose()。 |
![]() |
6
1
关于使用GC编码的几点建议:
|
![]() |
7
0
如果您没有注意到您正在使用GC,那么您正在使用它,并且您正在正确地使用它。
|
![]() |
8
0
了解它的工作原理总是有用的;但在大多数情况下,你不需要太担心。 当您开始分配非托管资源(或这样做的对象)时,值得在 IDisposable pattern 这样您就可以控制资源何时被释放(或者如果您想在与同行交谈时听起来很有见识的话,可以选择“确定性最终确定”)。 |
![]() |
9
0
在C中通常使用的内存管理风格中,跟踪堆中哪些区域空闲或分配的信息与指示实际使用哪些区域的信息是分开的。当不再需要堆上的信息时,代码必须显式地将其标记为未分配,否则它可能永远保持分配状态。 基于垃圾收集的系统将系统中的所有堆对象引用视为使用哪些对象的最终指示符。因为在每次分配对象时扫描系统中的所有对象引用是不切实际的,所以系统有效地“批处理”了工作:只要堆上仍然存在可用内存空间,内存就只是按顺序分配给对象。在堆太满之前,不会尝试回收任何空间。 如果任何线程在局部变量中持有对它的引用,或者任何全局变量持有对它的引用,或者如果被视为“已使用”的对象在任何字段中持有对它的引用,则该对象将被视为“已使用”。编译器通常可以判断保存对象引用的局部变量是否永远不会被实际使用,但它不能用全局变量或对象字段来做出这样的决定。如果一个有用的对象包含一个不再实际使用的对象引用,那么该引用应该设置为null(在VB中为Nothing)。如果不这样做,无用的对象将“保持活着”,只要有用的对象是。如果有用的对象类似于应用程序的主窗体,那么结果可能是内存泄漏,只要应用程序保持打开状态,这种泄漏就会持续存在。 |
![]() |
10
0
使用值类型减少堆中指针的数量。使用对象树而不是长数组使堆遍历更加增量并减少延迟。避免将引用写入堆中的可变表,因为这会导致写障碍,并降低吞吐量和延迟。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |