使用jstack监视堆利用率

时间:2018-07-31 14:39:35

标签: java garbage-collection jvm out-of-memory jstat

我知道这个问题已经问了很多,但是我还没有找到一种可靠的方法来解释用于监视的jstat输出。 我正在尝试在bash中编写一个Kava堆监视器,以部署在Linux上。我不能包含任何第三方代码,因此jvmtop是不可选项。我也不是Java编程方面的专家,所以即使我知道可以使用JMX在几行Java代码中完成类似的工作,但我也不知道该怎么做。 我正在尝试使用jstat输出来获取总堆大小和堆利用率,以便可以警告应用程序是否会遇到OOM问题。 到目前为止,这就是我所拥有的:

  1. 运行/usr/java/bin/jstat -gc并添加S0US1UEUOU以获得堆利用率。
  2. 运行/usr/java/bin/jstat -gccapacity并将NGCMXOGCMX加起来以获得堆容量。

    尽管如此,即使应用程序运行到OOM,利用率仍显示为70-80%,因此这不一定准确。 我试图使GC统计信息了解堆的利用率,但我想我不知道所有堆都包含什么。

2018-07-31T08:16:49.087-0400: 8063.483: [Full GC [PSYoungGen: 0K->0K(1286016K)] [ParOldGen: 1382807K->1335278K(1683840K)] 1382807K->1335278K(2969856K) [PSPermGen: 55666K->55460K(61568K)], 29.7283550 secs] [Times: user=117.08 sys=0.00, re al=29.73 secs] java.lang.OutOfMemoryError: Java heap space

我们为堆分配了4GB。

是否有使用jstat或JRE已部署的任何其他工具来计算堆利用率的可靠方法?

0 个答案:

没有答案