2
在我的rails应用程序中,每个请求的总体对象都在增加。 GC运行后,对象不能释放。我正在使用Rails 3.2.3和Ruby 1.9.3。Rails应用程序没有释放内存?
有人能指引我正确的方向吗?从哪儿开始?
有什么可用的工具?
我试过的工具。 ObjectSpace没有引用这些对象创建的行。 Memprof没有使用红宝石1.9.3。 Oink不引用这些对象创建的行。
在我的rails应用程序中,每个请求的总体对象都在增加。 GC运行后,对象不能释放。我正在使用Rails 3.2.3和Ruby 1.9.3。Rails应用程序没有释放内存?
有人能指引我正确的方向吗?从哪儿开始?
有什么可用的工具?
我试过的工具。 ObjectSpace没有引用这些对象创建的行。 Memprof没有使用红宝石1.9.3。 Oink不引用这些对象创建的行。
perftools.rb就不能不提什么方法创建多少个对象的能力:
CPUPROFILE_OBJECTS = 1次
档案的对象分配,而不是CPU /挂钟时间。每个样本 代表在该函数内创建的一个对象。
但是,这是分析所有对象,而不仅仅是垃圾回收对象。另外,在我的一些时间,它segfaults。
Ruby和其他好的GC一样,希望尽量减少动态内存分配和释放。这意味着Ruby将分配大量内存一次,并为新对象保留这些内存,这样就不必有更多的上下文切换或动态分配。 Ruby只会在内存不足时释放内存。 – Linuxios 2012-07-06 13:49:25
也许这个评论应该是一个答案? – robbrit 2012-07-06 14:48:37
@krunalshah你怎么知道GC运行相应的resquest /响应循环perhap GC只有在内存达到阈值以上时才会运行,除非你在代码中使用'GC.start'调用'GC',这太糟糕了 – Viren 2012-07-09 03:12:08