如何读取“jstat -gcutil <pid>?”的输出?

时间:2017-05-29 07:42:19

标签: java memory garbage-collection heap jstat

我正在运行JBoss服务器,以下输出属于-gcutil工具。我很好奇这是什么缩写。

> vendor.min.js:84275 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [[{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"}],[{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"}],[{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"}],[{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"}],[{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"},{"msg":"fn: ngModelWatch","newVal":"2017-05-28T22:00:00.000Z","oldVal":"2017-05-28T22:00:00.000Z"}]]
http://errors.angularjs.org/1.6.1/$rootScope/infdig?p0=10&p1=%5B%5B%7B%22ms…%3A00.000Z%22%2C%22oldVal%22%3A%222017-05-28T22%3A00%3A00.000Z%22%7D%5D%5D
    at vendor.min.js:84275
    at Scope.$digest (vendor.min.js:102059)
    at Scope.$apply (vendor.min.js:102287)
    at vendor.min.js:104131
    at completeOutstandingRequest (vendor.min.js:90318)
    at vendor.min.js:90597

由于

2 个答案:

答案 0 :(得分:2)

S0 =幸存者空间0利用率占空间当前容量的百分比。

S1 =幸存者空间1利用率占空间当前容量的百分比。

E =伊甸园空间利用率占空间当前容量的百分比。

O =旧空间利用率占空间当前容量的百分比。

P =永久空间利用率占空间当前容量的百分比。

YGC =年轻一代GC事件的数量。

YGCT =年轻一代垃圾收集时间。

FGC =完整GC事件的数量。

FGCT =完全垃圾回收时间。

GCT =垃圾回收总时间。

请参阅https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html#gcutil_option

上的文档

此外,您也可以参考http://www.cs.lafayette.edu/docs/java/tooldocs/share/jstat.html

答案 1 :(得分:1)

在@nurselcuk的答案上稍微扩展一下:内存被划分为堆空间(其中分配了对象)和永久空间 P (其中存储了类的字节码。堆空间进一步划分了)分为年轻的 Y 和终身/老一代的 O 。年轻一代由伊甸园空间 E 和两个幸存者空间 S0 < / strong>和 S1

将对象分配到eden空间。当伊甸园空间用尽时,垃圾收集器会将活动对象移动到幸存者空间并释放伊甸园空间。

当生存空间用完时,垃圾收集器通常会在生存空间内移动活动对象。幸存者空间0和1似乎又像复制收集器一样工作,其中对象仅分配到一个空间中,而另一个保持空闲。当前空间已满时,所有活动对象将移至可用空间,并且两个空间切换角色。如果某个对象已被收集了一定次数,则将其移至保管空间。

使用标记和清除算法,保留的空间也是垃圾。