2011-09-19 87 views
0

我有一个Jruby On Rails应用程序,它使用几个WS来收集数据。应用程序处理数据将其显示给用户,用户进行更改,然后发送回WS。Jruby,垃圾收集器,Redis

这里的问题是,我将所有内容都存储在使用内存存储的缓存(基于会话)中。但不时有没有明确的原因(至少我)这个错误弹出:

ActionView::Template::Error (GC overhead limit exceeded) 

我读什么我能找到它,显然这意味着垃圾收集花费要多少时间在试图自由记忆并没有在这方面取得真正的进展。我的猜测是,因为所有东西都存储在内存缓存中,所以GC试图释放它,不能这样做,并抛出这个错误。

所以这里是问题。

  • 我该如何解决这个问题?
  • 如果我从内存存储切换到Redis,如果我的假设是正确的,这个问题是否仍会出现。
  • GC是否会尝试释放Redis的内存区域? (可能是一个愚蠢的问题,但...请帮助:))

谢谢。

回答

0

Redis是一个独立的进程,所以你的应用程序垃圾收集器不会触及它。但是,redis可能会占用应用程序可用的所有内存,或者实际上使用的是进程内存缓存,而不是redis,这是一种不同类型的内存存储。