微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ref或值类,表示20000个对象的列表

如何解决ref或值类,表示20000个对象的列表

| 我需要维护一个类的大约20000个对象的列表。此类将是c ++的托管包装。我想知道引用类还是值类是他们要走的路。 有人告诉我以下有关GC的优缺点 对于值类,有一个指向垃圾回收的点相对于带有指针的引用类,那里有20000个对象要进行垃圾回收。此外,没有用于值类的终结器或析构函数,因此这些对象不会最终到达单线程的终结器队列中。 在这两种情况下,对于大型对象列表,有人可以详细说明GC的功能吗?     

解决方法

在回答我无法在SO上找到的问题时,@ Hans Passant建议一个.net结构(C ++ Cli的值类)最多应为16个字节。 所以不要犹豫,使用ref类。 这是一个有用的链接。     ,绝对是使用引用类型最简单的方法-“不要让我思考”平衡的确可以这样提示 FWIW,我可以很完美地看到自己分配了大约2Mb的缓冲区来包含valuetype对象的数组。 问题是,这些必须转移多少次。如果仅用于查找表,则值对象数组将获得一些性能,也许还有其他好处[1]。这可能对'FlyWeight \'模式有用 只需注意仅将索引传递给此类对象,否则复制将很快使您的应用程序陷入困境 [1]例如快速序列化;与参考值的标识相反,数组索引在应用开发人员的控制之下。这样可以通过索引值对这样的查找项进行非常有效的“浅”序列化,这在整理类型的用例中很有用(代替实际整理完整的引用对象,您可以使用\'进行引用)您为此目的而设计的无处不在的常量ID \”)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。