jvm调优

分代垃圾回收器常用调优参数
在这里插入图片描述调优追求的指标:吞吐量(增加)和响应速度(减少stop the word时间)
吞吐量:业务代码执行时间/总的执行时间
(总的执行时间=业务代码执行时间+GC时间)
步骤:
1.根据场景选择垃圾回收器
2.保证一年中99.9时间程序正常跑。(堆初始值和堆最大值选定)
3.-XX:log 要有日志,压测如果达不到效果,看日志。
调优工具:
在这里插入图片描述调优操作:
此处用的代码如下

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;

import static java.util.concurrent.TimeUnit.SECONDS;

public class FullgcDemo {
    private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(
            50,new ThreadPoolExecutor.DiscardOldestPolicy());
    public static void main(String args[])throws Exception{
        executor.setMaximumPoolSize(50);

        for(;;){
            trackInfo();
            Thread.sleep(100);
        }
    }
    private static void  trackInfo(){
        List<F10Info> taskList = pullF10Info();
        taskList.forEach(f10 ->{
            executor.scheduleWithFixedDelay(()->{
                f10.brag();
            },2,3,SECONDS);
                }
        );
    }

    private static List<F10Info>pullF10Info(){
        List<F10Info> taskList = new ArrayList<>();

        for (int i=0;i<100;i++){
            F10Info f10 = new F10Info();
            taskList.add(f10);
        }
        return taskList;
    }
    private static class F10Info{
        String comName = "乐视网";
        String  stockNo = "300104";
        String title = "贾跃亭否认跑路";
        int pushNum = 1;
        public void brag(){}
    }
}

cmd中输入jps得到如下数据,36228就是启动的FullgcDemo进程
在这里插入图片描述

使用jinfo命令查看,这些信息告诉了你如何使用jinfo
在这里插入图片描述输入jinfo 36228 检测问题
在这里插入图片描述输入jinfo -flags36228,由于是报错,会出现和上图相同的情况。
正常情况如下图所示,显示一些jvm信息
在这里插入图片描述输入jstat得到jstat的用法
在这里插入图片描述输入jstat -gcutil 17696 得到gc相关信息
S0 S1 E 分别为from区,to区,eden区。
在这里插入图片描述若在后面加上1000 则1秒打印一次,ctrl+c退出打印在这里插入图片描述使用jstack得到jstack的用法
在这里插入图片描述比如jstack -l 17696 就是检测关于锁的信息。
正确的信息如下
在这里插入图片描述jmap打印堆中的对象信息
在这里插入图片描述
jmap -histo:live 17696打印活着的对象
下图可以看到1234对象占用了很多资源,一直没有回收回去,是程序卡住的原因。
在这里插入图片描述jmap -heap 17696 打印堆中信息
正确信息如下。
在这里插入图片描述接下来拿dump信息。
先输入D:
转到D盘目录下
输入如下语句
jmap -dump:format=b,file=17696.dump 17696
在这里插入图片描述使用图形化界面
可以以管理员身份运行cmd
输入d:
再输入jvisualvm
在这里插入图片描述打开软件
在这里插入图片描述左上角文件,装入 点开你的dump文件。下面就是堆中信息。
在这里插入图片描述打开类中信息,与jmap -histo:live 17696得到的信息是相同的
在这里插入图片描述输入jhat -J-Xmx128M 17696.dump
在这里插入图片描述可以在网页中输入localhost:7000看参数
或者使用jcmd进行查询
在这里插入图片描述jcmd 16444 Thread.print 打印线程。
创建dump文件:jcmd 16444 GC.heap_dump d:\16444.jcmd
在这里插入图片描述还有一个调优工具叫Arthas(阿里的)
https://arthas.aliyun.com/doc/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值