jvm定位内存过高

来源:互联网 发布:qq监控软件下载 编辑:程序博客网 时间:2024/04/29 11:26

第一步:采用jstat命令,查看gc情况

[root@agx Data]# jstat -gccause 5947 2000  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC  0.00  41.67  72.78  75.99  53.50   3741   31.550     4    0.877   32.427 Allocation Failure   No GC  0.00  41.67  78.74  75.99  53.50   3741   31.550     4    0.877   32.427 Allocation Failure   No GC  0.00  41.67  78.74  75.99  53.50   3741   31.550     4    0.877   32.427 Allocation Failure   No GC

第二步:如果发现gc频繁,可以用jmap命令看看大概哪些class比较多,大致定位问题:

[root@agx Data]# jmap -histo 5947 | more num     #instances         #bytes  class name----------------------------------------------   1:         28964       31239848  [B   2:        142016       17525784  [C   3:         76447       11125808  <constMethodKlass>   4:         76447        9797328  <methodKlass>   5:          6934        8154944  <constantPoolKlass>   6:          4574        7364336  [I   7:          6934        5034312  <instanceKlassKlass>   8:          5695        4464704  <constantPoolCacheKlass>   9:        139010        3336240  java.lang.String

class name对应的就是Class文件里的class的标识
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前边有[代表数组,[I 就相当于int[]
对象用[L+类名表示

//todo 有待实践进一步完善



0 0