7. JVM调优实战及常量池详解

news2024/12/19 14:08:11

JVM性能调优

  • 1. 阿里巴巴Arthas详解
    • 1.1 Arthas使用

本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。

课程内容:

1、阿里巴巴Arthas调优工具详解

2、GC日志详解与调优分析

3、Class常量池与运行时常量池详解

4、字符串常量池与基本类型常量池详解

1. 阿里巴巴Arthas详解

Arthas是 Alibaba在2018年9月开源的Java诊断工具。支持JDK6+,采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas官方文档十分详细,详见: https://alibaba.github.io/arthas

1.1 Arthas使用

#github下载arthas
wget https://alibaba.github.io/arthas/arthas-boot.jar
#或者Gitee下载
wget https://arthas.gitee.io/arthas-boot.jar

用java -jar运行即可,可以识别机器上所有Java进程(我们这里之前已经运行了一个Arthas测试程序,代码见下方)

在这里插入图片描述

package ding;

import java.util.HashSet;

public class Arthas {
    private static HashSet hashSet = new HashSet();

    public static void main(String[] args) {
        //模拟cpu过高
        cpuHigh();
        //模拟线程死锁
        deadThread();
        //不断地向HashSet集合增加数据
        addHashSetThread();
    }

    /**
     * 不断地向hashSet集合添加数据
     */
    public static void addHashSetThread(){
        //初始化常量
        new Thread(()->{
            int count = 0;
            while (true){
                try {
                    hashSet.add("count" + count);
                    Thread.sleep(10000);
                    count++;
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }
    public static void cpuHigh() {
        new Thread(()->{
            while (true){

            }
        }).start();
    }

    /**
     * 死锁
     */
    private static void deadThread() {
        //创建资源
        Object resourceA = new Object();
        Object resourceB = new Object();
        //创建线程
        Thread threadA = new Thread(()->{
            synchronized (resourceA){
                System.out.println(Thread.currentThread()+"get ResourceA");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread()+"waiting get ResourceB");
                synchronized (resourceB){
                    System.out.println(Thread.currentThread()+"get ResourceB");
                }
            }
        });
        Thread threadB = new Thread(()->{
            synchronized (resourceB){
                System.out.println(Thread.currentThread()+"get ResourceB");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread()+"waiting get ResourceA");
                synchronized (resourceB){
                    System.out.println(Thread.currentThread()+"get ResourceA");
                }
            }
        });

        threadA.start();
        threadB.start();
    }
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

氟化物选择吸附树脂Tulsimer ®CH-87 ,锂电行业废水行业矿井水除氟专用树脂

氟化物选择吸附树脂 Tulsimer CH-87 是一款去除水溶液中氟离子的专用的凝胶型选择性离子交换树脂。它是具有氟化物选择性官能团的交联聚苯乙烯共聚物架构的树脂。 去除氟离子的能力可以达到 1ppm 以下的水平。中性至碱性的PH范围内有较好的工作效率,并且很容易再生…

Ingress详解

Ingress Service对集群外暴露端口两种方式,这两种方式都有一定的缺点: NodePort :会占用集群集群端口,当集群服务变多时,缺点明显LoadBalancer:每个Service都需要一个LB,并且需要k8s之外设备支…

[洛谷]P2960 [USACO09OCT]Invasion of the Milkweed G(BFS,坑点多多)

、1:坐标是反的,(1,1)是在左下角,正常在右上角,所用建图的时候要小心 2: 加node(),搭配 中的构造 3: 不用判断位置是否越界,数组从1,1开始&…

网络安全通信HTTPS原理

背景 HTTPS并不是一个全新的协议,而是为了保证网络通信的数据安全,在HTTP的基础上加上了安全套件SSL的一个数据通信协议。 HTTP协议全称为HyperText Transfer Protocol即超文本传输协议,是客户端浏览器与Web服务器之间的应用层通信协议。HT…

秘钥失效问题

一、发现问题 问题如下图代码: $ ssh root108.61.163.242 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is …

前端入门学习

封装axios axios的基础使用 axios基础使用方法: axios.create({config}) //创建axios实例 axios.get(url,{config}) //get请求 axios.post(url, data,{config}) //post请求 axios.interceptors.request.use() // 请求拦截器 axios.interce…

华为OD机试真题 Java 实现【高矮个子排队】【2023Q2 100分】,附详细解题思路

一、题目描述 现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高…

工业相机分类、相关参数含义

一、工业相机参数 1、分辨率 分辨率是相机最基本的参数,由相机所采用的芯片分辨率决定,在采集图像时,相机的分辨率对检测精度有很大的影响,在对同样大的视场(景物范围)成像时,分辨率越高&…

高阶数据结构 ——— 图

文章目录 图图的基本概念图的存储结构邻接矩阵邻接表 图的遍历广度优先遍历深度优先遍历 最小生成树Kruskal算法Prim算法 最短路径单源最短路径-Dijkstra算法单源最短路径-Bellman-Ford算法多源最短路径-Floyd-Warshall算法 图 图的基本概念 图的基本概念 图是由顶点集合和边的…

【软件测试】cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大 为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户…

win10 链接github

https://github.com.ipaddress.com/ 在链接里面找到ip 打开系统host文件 Windows 系统:C:\Windows\System32\drivers\etc\hosts Linux 系统:/etc/hosts Mac(苹果电脑)系统:/etc/hosts Android(安卓&#x…

实战-基于Jenkins+K8s构建DevOps平台(九)

实验步骤如下: 第一部分:安装持久化存储nfs 1、在k8s-master和k8s-node1上安装nfs服务 [rootk8s-master ~]# yum install nfs-utils -y [rootk8s-master ~]# systemctl start nfs [rootk8s-master ~]# systemctl enable nfs [rootk8s-node1 ~]# yum …

深度学习-第T9周——猫狗识别

深度学习-第T9周——猫狗识别 深度学习-第T9周——猫狗识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1.1、设置图片格式1.2、划分训练集1.3、划分验证集1.4、查看标签1.5、再次检查数据1.6、配置数据集 2、数据可视化 五、搭建…

2023下半年软考中级考试科目-2023年11月软考中级科目难度排行

软考中级资格考试科目分为基础知识和应用技术,基础知识在上午考试,应用技术在下午考试,两个科目的考试题型也有所不同。 基础知识考试题型为客观选择题,共计75道选择题,每小题1分;应用技术为主观问答题&am…

组合数学第五讲

Catalan numbers(卡特兰数) 先通过平衡括号引入卡特兰数序列的概念 1,2,5,14,...,这些数构成了卡特兰数序列,分别代表一共有i个括号时,括号排列构成的合法方案数【从左到右如果所有括号都能依次配对即是合…

【微服务项目】Spring Cloud Alibaba 实战

Spring Cloud Alibaba 实战 一、目标 理解什么是微服务架构理解什么是springcloud及spring cloud alibaba和springcloud的关系掌握使用springcloud alibaba 实现微服务远程调用掌握使用springcloud alibaba 实现服务注册与发现掌握使用springcloud alibaba 实现基本的服务配置…

240:vue+openlayers上传CSV文件,在地图上显示信息

第240个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers上传CSV文件,在地图显示,点击点后,显示点信息。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果使用的csv…

玩转ChatGPT:制作AI播报视频

一、写在前面 羊了几天,上线就发现,GPT的第三方插件的数量越来越多,使得官方推出了搜索功能: 我逛了一圈,发现这个插件挺有意思,用来生成AI语音播报视频的。 下面给大家尝尝鲜。 二、实战过程 &#xff0…

k8s pvc详解

一、概述 PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存&am…

移动端做安全测试的重要性

安全性测试的目的是发现危害手机中数据的安全和完整性的错误和缺陷。发现安全错误通常是比较困难的,软件通常功能运行正常但却不安全。 一、软件权限 APP软件权限包括:网络通信、信息发送、自动启动、 媒体录制、读取用户信息、写入用户数据等权限,因关系到用户个人信息和隐私…