JVM: 调优相关

java参数:

  1. -开头, 标准参数在这里插入图片描述

  2. -X开头, 非标参数在这里插入图片描述

  3. 我们调优的参数, -XX

参数如下
java -XX:+PrintCommandLineFlags -version。 打印java虚拟机启动的时候, 自带了一些参数, 打印这些参数。

[root@iZ2ze1zeijykeg3hjbji2dZ java]# java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=30115712 -XX:MaxHeapSize=481851392 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops 
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
----------------------------------------------
-XX:InitialHeapSize=30115712  起始堆内存大小
 -XX:MaxHeapSize=481851392 最大堆内存占多少
 -XX:+UseCompressedOops 使用压缩的类对象指针
 

java -XX:+PrintFlagsFinal -version查看参数
一共739个
在这里插入图片描述

什么是调优?
1.根据需求进行JVM规划和调优
2.优化运行JVM运行环境(慢, 卡顿)
3.解决JVM运行过程中出现的各种问题(OOM)

样例
运行命令

java -Xms30M -Xmx30M -XX:+PrintGC -jar jdkStudy.jar
public class testMain {
    private static class CardInfo {
        BigDecimal price = new BigDecimal(0.0);
        String name = "陈坤";
        int age = 5;
        Date BirthDay = new Date();
        public void m(){

        }
    }

    private static ScheduledThreadPoolExecutor executor =
            new ScheduledThreadPoolExecutor(50,
            new ThreadPoolExecutor.DiscardOldestPolicy());

    public static void main(String[] args) throws InterruptedException {
            executor.setMaximumPoolSize(50);
            for(;;){
                modeFit();
                Thread.sleep(100);
            }

    }

    private static void modeFit(){
        List<CardInfo> taskList = getAllCardInfo();
        taskList.forEach(cardInfo -> {
            executor.scheduleWithFixedDelay(()->{
                cardInfo.m();
            }, 2, 3, TimeUnit.SECONDS);
        });
    }

    private static List<CardInfo> getAllCardInfo(){
        List<CardInfo> taskList = new ArrayList<>();
        for(int i = 0; i < 100; i++){
            CardInfo cardInfo = new CardInfo();
            taskList.add(cardInfo);
        }
        return taskList;
    }
}

jstack 27949 | more 列出进程里面所有的线程都列出来
jmap -histo 30989 | head -20 把对象列出来

jmap -histo 30989 | head -20查看内存的问题, 内存泄漏
在这里插入图片描述
arthas 观察cpu彪高的问题, 可以看见具体是那个线程占CPU多
下载地址: wget https://alibaba.github.io/arthas/arthas-boot.jar
在这里插入图片描述

GPU彪高, 看看是不是GC, 是GC的话, 可以是OOM问题, 也有可能是工作线程的问题。

arthas的命令
在这里插入图片描述
thread -b: 找死锁, 一次命令就找到。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值