首页 / 知识
垃圾收集C ++中的库
2023-04-16 10:59:00

Garbage collection Libraries in C++什么免费和商业垃圾收集库可用于C ++,每个库的优缺点是什么? 我对来自该领域实际使用的来之不易的教训感兴趣,而不是营销或宣传模糊。 没有必要详细说明与自动垃圾收集相关的常规权衡,但请提及所使用的算法(引用计数,标记和扫描,增量等)并简要总结后果。 我过去使用过Boehm收藏家并取得了很大的成功。它是开源的,可用于商业软件。 它是一个保守的收藏家,并且由垃圾收集技术领域最重要的研究人员之一拥有悠久的发展历史。 Boost有很多智能指针,可以引用引用计数或删除范围退出或侵入引用计数。这些已经证明足以满足我们的需求。一个很大的优点是它都是免费的,开源的,模板化的C ++。因为它是引用计数,在大多数情况下,当对象被破坏时它是高度确定的。 我经常使用boehm-gc。它很简单,但文档很差。有一个C ++页面,但很难找到。 基本上,您只需确保每个类都继承自其基类,并始终将gc_allocator传递给容器。在许多情况下,您希望使用libgccpp来捕获new和delete的其他用法。这些都是高级别的更改,我们发现我们可以使用#ifdef在编译时关闭GC,并且支持它只会影响一个或两个文件。 我的主要问题是你不能再使用Valgrind了,除非你先关掉收集器。虽然关闭收集器很容易做到,并且不需要重新编译,但如果你开始耗尽内存,显然不可能使用它。 Boehm垃圾收集器是免费提供的,据说相当不错(没有亲自体验) ([PDF警告]关于Boehm垃圾收集器的C ++ 0x提议的理论论文) 它最初被称为制作C ++ 0x,但毕竟不会制作它(由于我想的时间限制)。 Proprosal N2670(对垃圾收集器的最小支持)确实在2008年6月获得批准,因此当编译器实现接受这个,并且标准最终确定时,C ++的垃圾收集世界肯定会改变...... 在GC中,GC的主要困难是需要处理不合作的模块。即,处理从未用GC编写的库。 这就是为什么经常建议使用Boehm GC的原因。 我所知道的唯一一个是Boehm,底部是传统的标记和扫描。它可能使用各种技术来优化这一点,但通常增量/生成/压缩GC很难为C ++创建,而无需使用诸如.Net C ++之类的托管子集。需要移动指针的一些方法可以通过编译器支持来实现,虽然固定指针或读/写块,但是对性能的影响可能太大,并且它不一定是GC的非平凡变化。 阅读本文并仔细研究结论:
是的,最后一句是主观的,也是圣战的一部分。 您还可以使用Microsoft的托管C ++。 CLR和GC非常可靠并用于服务器产品,但您必须使用CLR类型来实际收集GC - 您不能只重新编译现有代码并删除所有删除语句。 我宁愿使用C#编写全新的代码,但Managed C ++允许您以更加进步的方式改进代码库。 这是我在寻找同样的东西时发现的商业产品 HnxGC http://hnxgc.harnixworld.com/ 在当天,还有一款名为Great Circle的产品来自Geodesic Systems,但看起来他们不再销售。不知道是否将产品卖给了其他任何人。 |
最新内容
相关内容
linux扫描端口命令?
linux扫描端口命令?,系统,地址,网络,状态,信息,检测,情况,工具,端口,灵活,linux怎么看端口是否开放可以用nmap工具进行检测端口是否开放。1:nmalinux扫描新磁盘命令?
linux扫描新磁盘命令?,管理,系统,情况,服务,信息,工作,命令,设备,密码,地址,Linux磁盘管理的Linux管理命令1、du(disk usage)命令可以计算文件防篡改算法linux命令?
防篡改算法linux命令?,技术,网络,系统,数据,区块链,电子,交易,信息,网站,国际,编程高手来啊!!!急啊!!!在你的倒数第5两行中间插入一行:Call Dealinux扫描磁盘的命令?
linux扫描磁盘的命令?,情况,系统,管理,单位,信息,命令,服务,软件,磁盘,空间,linux系统查看磁盘空间的命令是什么?1、查看磁盘空间 -df df命令linux所有扫描命令?
linux所有扫描命令?,地址,工作,系统,网络,信息,命令,电脑,软件,网上,目录,nmap扫描端口命令1、nmap扫描端口命令是nmap-PSip地址,使用该命令可ip扫描命令linux?
ip扫描命令linux?,地址,信息,网络,系统,设备,服务,状态,平台,工具,命令,linux怎么ipscan命令通过SNMP(简单网络管理协议)来发现多机共享上网。本linux扫描fc命令?
linux扫描fc命令?,工作,信息,系统,工厂,地址,财务,劳务,国家,技术,贸易,Linux下Grep命令的详细使用方法查找root目录下包含Linux的文件,命令:lsPython3实现旋转数组的3种算法
Python3实现旋转数组的3种算法,位置,代码,时间,培训,算法,数组,解法,结果,长度,索引,下面是Python3实现的旋转数组的3种算法。一、题目给定一Python算法是什么?有哪几类?
Python算法是什么?有哪几类?,数据,数字,时间,算法,系统,策略,位置,有限,标准,培训,了解Python的人应该都听说过Python算法,但是它们的类型和定义Python编程中3个常用的数据结构和
Python编程中3个常用的数据结构和算法,代码,电话号码,销售额,有限,情况,分解,异常,名称,平均,位置,python内置了许多非常有用的数据结构,比如Python机器学习之AdaBoost算法
Python机器学习之AdaBoost算法,数据,综合,失衡,时间,培训,算法,样本,权重,模型,机器,算法概述AdaBoost是英文AdaptiveBoosting(自适应增强)的Python算法定义
Python算法定义,有限,时间,数据,算法,情况,培训,系统,策略,复杂度,步骤,算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的