我正在使用 JRuby 在 Jboss 上运行一些 Rails 应用程序。
有时 Java 垃圾收集器无法释放内存,并且 jvm 会消耗所有可用内存。
我正在尝试使用 jstat 创建自定义指标,但无法找出一些有价值的统计数据,以便让我在 Java 崩溃之前检测到一些危险情况并在服务器上采取一些措施。
当 jvm 上的所有内存都被使用时,服务器的一个核心将保持满负荷状态,尝试收集并释放一些内存。
您知道如何检测 GC 何时将要失败吗?
谢谢。
答案1
使用 Java Mission Control 连接到应用程序,然后进行手动记录或设置内存触发器。任务控制的用户指南位于http://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/index.html和http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/index.html
您还可以使用模板管理器记录所有垃圾收集活动。这样,您就可以看到代码在何处创建对象的分配数据。