垃圾收集器可以在我的应用程序之外工作?

时间:2010-12-07 21:45:45

标签: c++ garbage-collection

所以我正在寻找开源,跨平台(至少是win,lin)库,它会在一些抽象的C ++线程/进程上进行垃圾收集...所以说是应用程序内存管理的单独进程...或者在至少会给我一些功能,因为没有用过的内存删除查看我的进程......有没有这样的?能帮助我吗?

我的主要观点是找到能够在我的普通c ++代码/之上运行的垃圾收集器。我的意思是没有特殊的内存分配在主程序代码中没有特别使用它...可能只是以某种方式连接到我的进程并对其进行监控...所以我对这样的gc感兴趣,这个gc可以在进程和清理工作之上工作,所以说要警惕旧的未使用的内存块......

因此,让我更详细地描述问题:我的代码通常可以自行管理它。但有时它只是将2-3 mbs放入ram而不是从不使用tham - 我知道它没有 - 我毕竟编写代码...所以这就是为什么我需要一些我的应用程序gc。 ..

3 个答案:

答案 0 :(得分:5)

我认为你的时间会更好地修复内存泄漏。这可能是其他一些更严重的bug的症状。

答案 1 :(得分:1)

我从来没有听过或看过过程或线程级而不是源代码级别的内存管理系统。如果没有源代码,您将永远不会有足够的程序信息来查看仍然引用的内存以及哪些字节集看起来像是指向该地址的指针。

答案 2 :(得分:1)

你可以尝试Boehm的保守标记垃圾收集器:

http://www.hpl.hp.com/personal/Hans_Boehm/gc/

我自己从未使用它,但是如果你可以让你的目标线程/进程链接到它的alloc函数和一个do-nothing free函数,你可能会有机会。当然,动态链接的细节是特定于平台的。

请注意,它不会仅仅放在所有 C ++代码之上。如果你的析构函数除了可用内存之外还有其它任何东西,那么我怀疑你是在困难时期,因为尽管GC支持终结器,但是(a)最终确定与破坏在根本上不同于它不能及时运行(b)无论如何,它需要更改源。

最好修复C ++代码中的内存泄漏;-p大多数C ++库等是在假设您将使用典型的C ++技术进行资源管理的情况下编写的,并且它们不一定能很好地与GC一起使用。