JVM调优

本文详细介绍了JVM调优的各种工具,包括Jmap、Jstack、Jinfo、Jstat的使用,如Jmap的-histo和-heap选项用于内存分析,Jstack用于排查死锁和CPU占用高的线程,Jstat则用于监控垃圾回收和内存使用。通过这些工具,可以评估JVM的运行情况,例如年轻代对象增长速率、GC频率和耗时,并据此制定优化策略,降低Full GC对性能的影响。
摘要由CSDN通过智能技术生成

Jmap

Jmap -histo pid

当服务器内存占用飙高,可以使用Jmap查看Java应用内存信息,实例个数以及占用内存大小。

/**
* 测试代码
*/
public class HeapTest {
   

    private static List<Company> list = new ArrayList<>();

    public static void main(String[] args) {
   
        while (true){
   
            list.add(new Company());
        }
    }
}


class Company{
   

    private String name;

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }
}

[root@master ~]# jmap -histo 260613

 num     #instances         #bytes  class name
----------------------------------------------
   1:      70091071     1121457136  com.jvm.Company
   2:           513      280390104  [Ljava.lang.Object;
   3:           882          84064  [C
   4:           471          54216  java.lang.Class
   5:             9          25040  [B
   6:           869          20856  java.lang.String
   7:           256           4096  java.lang.Integer
   8:            91           3640  java.lang.ref.SoftReference
   9:           109           3488  java.util.Hashtable$Entry
  10:            89           3000  [I
  11:             7           2632  java.lang.Thread
  12:            58           2024  [Ljava.lang.String;
  13:            38           1824  sun.util.locale.LocaleObjectCache$CacheEntry
  14:            51           1632  java.util.concurrent.ConcurrentHashMap$Node
  15:            19           1216  java.net.URL
  16:             2           1064  [Ljava.lang.invoke.MethodHandle;
  17:             1           1040  [Ljava.lang.Integer;
  18:            26           1040  java.io.ObjectStreamField


jmap -histo:live pid #查看当前存活的实例

当发生内存溢出时,可以根据GC日志找到问题代码。

[root@master ext]# java -XX:+PrintGCDetails com.jvm.HeapTest
[GC (Allocation Failure) [PSYoungGen: 31232K->5116K(36352K)] 31232K->21036K(119808K), 0.0260969 secs] [Times: user=0.07 sys=0.01, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 36348K->5104K(67584K)] 52268K->40435K(151040K), 0.0301175 secs] [Times: user=0.08 sys=0.01, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 55880K->5104K(67584K)] 91211K->107276K(170496K), 0.1080058 secs] [Times: user=0.15 sys=0.08, real=0.11 secs] 
[Full GC (Ergonomics) [PSYoungGen: 5104K->0K(67584K)] [ParOldGen: 102172K->80415K(205312K)] 107276K->80415K(272896K), [Metaspace: 2959K->2959K(1056768K)], 0.9571864 secs] [Times: user=2.76 sys=0.07, real=0.96 secs] 
[GC (Allocation Failure) [PSYoungGen: 62464K->5120K(100864K)] 178934K->154966K(306176K), 0.1663656 secs] [Times: user=0.58 sys=0.02, real=0.17 secs] 
[Full GC (Ergonomics) [PSYoungGen: 5120K->0K(100864K)] [ParOldGen: 149846K->138855K(305664K)] 154966K->138855K(406528K), [Metaspace: 2959K->2959K(1056768K)], 1.2778122 secs] [Times: user=4.28 sys=0.01, real=1.27 secs] 
[GC (Allocation Failure) [PSYoungGen: 95744K->5120K(130048K)] 288682K->288874K(435712K), 0.2113250 secs] [Times: user=0.77 sys=0.05, real=0.22 secs] 
[Full GC (Ergonomics) [PSYoungGen: 5120K->0K(130048K)] [ParOldGen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuidianjay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值