Unity C#随笔:关于GC(垃圾回收)

GC的定义和功能:

在C#中,垃圾回收(Garbage Collection,GC)是一种自动内存管理机制,它负责在程序运行时检测和释放不再被程序使用的内存,以防止内存泄漏和提高程序的性能。

如何尽量避免GC,减少GC次数:

  • 使用对象池: 对象池是一种设计模式,它可以重用对象,而不是频繁地创建和销毁。这样可以减少GC的次数,提高性能。
  • 优化数据结构: 选择合适的数据结构,避免不必要的对象创建。例如,当字符串涉及频繁修改拼接操作时,使用StringBuilder代替String,减少中间对象的创建。

GC失败的原因:

  • 引用计数不为零: 如果一个对象被引用,其引用计数不为零,即使程序不再使用它,内存也不能被释放。

  • 无法访问的对象: 当某个对象被分配内存,但在后续的程序执行中,无法再被访问到(例如指针丢失,或者作用域结束),这部分内存就变成了垃圾。

  • 循环引用: 如果两个或多个对象互相引用,形成了循环引用,即使这些对象不再被程序引用,它们之间的引用关系使得它们的引用计数不为零,导致无法被释放。

 

如何尽可能避免GC失败:

  • 避免循环引用: 在设计数据结构时,注意避免循环引用。如果确实需要循环引用,可以使用弱引用(Weak Reference)来打破循环引用关系,使得对象在GC时能够被回收。
  • 及时释放引用: 当某个对象不再需要时,及时将其引用置为null,以便GC能够正确地判断它是否是垃圾。

你可能感兴趣的:(#,Unity,面试,c#,内存管理,GC,垃圾回收)