我们发现JRuby应用程序中的正则表达式缓存已经失控 - 它一直在不断增长和发展,直到应用程序停止运行。
它最终会进行垃圾收集,但在此之前,交易时间会变得太长(90秒而不是1-2秒)。
有没有办法阻止这个Regexp Cache增长如此之多或者限制缓存的大小?
答案 0 :(得分:0)
首先,既然您已经提到在Very large retained heap size for org.jruby.RubyRegexp$RegexpCache in JRuby Rails App查看来源,您可能已经意识到没有实施此类支持。
会说你有2-3个选择来决定:
RubyRegexp
RubyRegexp
缓存,例如从另一个线程(至少直到PR被接受到JRuby)默认情况下,一个提示与JVM如何保持软引用-XX:SoftRefLRUPolicyMSPerMB=250
1000 (1秒)有关,因此降低它意味着它们会活得更短......但它可能只是关于它们何时被收集(取决于我猜的GC和Java版本)所以最终你可能会发现修复症状而不是真正的原因(正如所指出的那样,这些不能概括)尤其是对应用程序和/或使用的JVM OPTS知之甚少)