Jruby持久性问题

时间:2011-03-23 22:21:37

标签: ruby persistence jruby

我想将物品存放在jruby中一小段时间。对象使用procs所以我似乎无法将其存储到db中。如果有人对如何坚持1-5分钟的jruby物体有好的想法,那就太好了。

这些对象非常大,特别是快速浏览器对象。

现在,我已经像jruby一样创建了一个模型:

class Persist
    @@persistHash ||= Hash.new

    def self.storeItem(id, item)
        @@persistHash[id.to_s] = item
    end

    def self.getItem(id)
        return @@persistHash[id.to_s]
    end
end

我已经将应用程序弄坏了并将其部署到glassfish v2。

我运行该程序,它运行良好一段时间。但过了一天,如果我在“商店”(10-20秒)之后立即打电话给“获取”,我将返回零。

我在日志中找不到任何错误。

编辑:我还发现该项确实插入了哈希表(哈希表在插入过程中没有耗尽内存):

在24小时之前:

Persist.storeItem()后跟Persist.getItem()工作正常。

商店的http调用。然后另一个get调用get返回对象。

24小时后:

Persist.storeItem()后跟Persist.getItem()工作正常。

商店的http调用。然后另一个get get的http调用返回nil。

1 个答案:

答案 0 :(得分:1)

我在任何时候都看不到对象被删除。

我会使用其他工具检查JVM。很可能你已经耗尽了内存但是永远不会创建日志消息/异常以报告内存耗尽。

我是否可以建议连接各种堆区域的JMX监视,并创建一种方法,通过该方法可以清除旧对象的哈希值。

希望我能为你做更多的事情。祝你好运!