Java 诊断工具Arthas--优化速度+堆栈判断

news2024/12/25 13:54:20

文章目录

  • 前言
  • 使用
  • 总结


前言

我们在日常开发中,当我们遇到大数据量处理的时候,总是苦恼有时候到底慢在哪?
在coding的时候就要注意以下几点:

  1. 循环内打印日志
  2. 循环内查询sql
  3. 循环内多次发送http请求
  4. 查询的时候尽量指定查询字段,不要*或者全部字段查询
  5. 不要在循环内频繁new 新对象,最好改为指向新的引用地址来优化。例子如下
// 错误的方法
for(int i = 0; i < 100000; i++){
	A a = new A;
}

// 正确的方法
A a = null;
for(int i = 0; i < 100000; i++){
	a = new A;	
}

// 这样的好处就是避免创建太多造成GC

在大体遵循以上的规则之后还是慢的时候,我们就可以使用Arthas来进行判断到底哪里慢,(避免我们到处打日志来判断,这样效率太低了)

使用

这里的时候主要是面向本地开发使用。当然我们也可以使用在我们的服务器取监控。

  • 安装
    https://blog.csdn.net/Cloud826/article/details/98969109,略:down下来一解压就行

  • 使用

  1. 在arthas目录cmd进入

  2. 使用as.bat (win基本都是这个.bat启动,Linux使用.sh启动)启用监听对应的pid

  3. pid 使用java的jvisualvm判断,cmd jvisualvm打开

在这里插入图片描述
4. 输入pid 在as.bat后面
在这里插入图片描述
5. 进入界面进入

  1. 判断耗时(为例)
    官方文档,还有其他的命令供参考:
    https://arthas.aliyun.com/doc/trace.html#%E6%8D%AE%E8%B0%83%E7%94%A8%E8%80%97%E6%97%B6%E8%BF%87%E6%BB%A4
    在这里插入图片描述

  2. 查看耗时判断优化的方法
    优化的方法同上
    再加点:能不能进行中间变量的缓存

总结

arthas的功能不止判断耗时这么简单,还要分析堆栈的功能。
本文仅已优化代码耗时,避免我们使用log一点一点判断

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

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

相关文章

Redis的过期策略

Redis 过期删除与内存淘汰 #Redis 使用的过期删除策略是什么&#xff1f; Redis 是可以对 key 设置过期时间的&#xff0c;因此需要有相应的机制将已过期的键值对删除&#xff0c;而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时&#xff0c;Red…

GEE学习笔记 五十四:QGIS展示3D的高程数据

QGIS作为一个开源的非常好用的本地GIS工具&#xff0c;这里不在赘述&#xff0c;这里说它的一个比较有意思的内容。通过DEM数据展示3D地形。 下载DEM&#xff08;高程数据&#xff09; 比如从官网下载&#xff0c;或者从别的地方获取&#xff0c;这里就不在赘述。我这里下载使…

BatchNorm与LayerNorm的比较

Batch Normalization存在的一些问题 &#xff08;1&#xff09;BN在mini-batch较小的情况下不太适用 BN是对整个mini-batch的样本统计均值和方差 当训练样本数很少时&#xff0c;样本的均值和方差不能反映全局的统计分布信息&#xff0c;从而导致效果下降 &#xff08;2&am…

【ROS2开发】BOOST-C++实现topic通信

一、说明 不知是何原因&#xff0c;ROS2居然没有集成开发环境&#xff0c;因此工程管理、编译等是全手工活。本文将详细讲述工程构建、编译、topic节点具体内容。让初学者直接进入战场环境。结合图文&#xff0c;尽量看清开发过程。 二、目标实现 我们这里就是要手工构建一个Pu…

根据数据规模猜解法

文章目录0、结论1、题目1.1 题目描述1.2 思路分析1.2.1 暴力递归解法11.2.2 解法1修改成动态规划1.2.3 暴力递归解法21.2.4 解法2修改成动态规划1.2.5 对数器1.3 小结2、总结0、结论 1&#xff09;C/C&#xff0c;1秒处理的指令条数为 10810^8108 2&#xff09;Java等语言&am…

大数据核心技术是什么

大数据的核心层&#xff1a;数据采集层、数据存储与分析层、数据共享层、数据应用层&#xff0c;可能叫法有所不同本质上的角色都大同小异。 大数据的核心技术都包括什么&#xff1f; 1、数据采集 数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上&#xff0c…

多种方法进行去基线处理

目录detrend函数去除基线多项式拟合原函数BEADS 基线处理小波算法经验模态分解&#xff08;EMD&#xff09;参考detrend函数去除基线 detrend函数只能用于去除线性趋势&#xff0c;对于非线性的无能为力。 函数表达式&#xff1a;y scipy.signal.detrend(x): 从信号中删除线…

3.【Linux】安装 elasticsearch-7.10.0 单机版

1.下载 版本 JDK 11ES elasticsearch-7.10.0 jdk安装 下载&#xff1a; wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz配置环境变量&#xff1a;# 编辑配置文件 vim /etc/profile# Java11环境变量配置 export JAVA_HOME/devtools/ja…

【编程语言】AWK 极简教程

1 概述 AWK 是一种解释执行的编程语言。它非常的强大,被设计用来专门处理文本数据。AWK 的名称是由它们设计者的名字缩写而来 —— Afred Aho, Peter Weinberger 与 Brian Kernighan。 由 GNU/Linux 发布的 AWK 版本通常被称之为 GNU AWK,由自由软件基金( Free Software Fou…

《爆肝整理》保姆级系列教程python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)

简介 大多数的初学者在使用 unittest 框架时候&#xff0c;不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚&#xff0c;不知道什么时候执行&#xff0c;什么时候不执行。虽然或许通过代码实现了&#xff0c;也是稀里糊涂的一知半解&#xff0c;这样还好&am…

2023前端二面手写面试题总结

创建10个标签&#xff0c;点击的时候弹出来对应的序号 var a for(let i0;i<10;i){adocument.createElement(a)a.innerHTMLi<br>a.addEventListener(click,function(e){console.log(this) //this为当前点击的<a>e.preventDefault() //如果调用这个方法&#x…

Nordic nRF芯片FDS模块学习

FDS系统学习 文章目录FDS系统学习一、ROM&#xff0c;RAM&#xff0c;FLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读…

PWM实验

目录 一、pwm与RGB LCD 二、硬件原理 1、I.MX6U PWM 频率和占空比 2、原理图与数据手册 3、寄存器 PWM1_PWMCR PWM1_PWMIR​编辑 PWM1_PWMSR​编辑 PWM1_PWMPR​编辑 PWM1_PWMSAR​编辑 三、代码编写 1、编写bsp_backlight.h 2、编写bsp_backlight.c 一、pwm与RGB …

物联网平台源码 物联网源码 springmvc+Mysql+Html

IOT智慧物联网大数据平台源码 物联网平台是一套存在于云端的的软件&#xff0c;提供了一种支持将物联网系统中的设备层、网络层和应用层组织在一起的方案模板&#xff0c;物联网平台现已成为物联网生态系统中最重要的组成部分。 一般来讲&#xff0c;完整的物联网平台主要由以…

Linux C/C++或者嵌入式开发到底有没有35岁危机?

一个读者问了一个问题&#xff1a; 我现在25岁&#xff0c;双非一本本科。在深圳上班&#xff0c;做嵌入式开发&#xff0c;打算走Linux C/C开发&#xff0c;工资目前一般。读了前辈写的很多博客之后&#xff0c;觉得很棒。我现在有一些疑问。 1.最近互联网裁员很厉害嘛&#x…

【selenium自动化测试】如何定位页面元素,及对页面元素的操作方法

selenium元素定位 ​selenium定位元素的方式有8种。 fild_element(by,value)&#xff1a;by表示使用的定位方式&#xff0c;定位方式可以参见By类。value表示值&#xff0c;例如&#xff1a;根据id定位 By.ID&#xff0c;valueid属性的值。该方法返回元素对象&#xff0c;返…

【Linux学习笔记】3.Linux 忘记密码解决方法及远程登录

前言 本章介绍Linux的忘记密码解决方法及远程登录。 Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码&#xff0c;linux系统忘记root密码的情况该怎么办呢&#xff1f;重新安装系统吗&#xff1f;当然不用&#xff01;进入单用户模式更改一下root密码即可。 …

【Leetcode 剑指Offer】第 4 天 查找算法(简单)

查找剑指 Offer 03. 数组中重复的数字剑指 Offer 53 - I. 在排序数组中查找数字 I二分法题目链接剑指 Offer 03. 数组中重复的数字 题&#xff1a;在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数…

一个列表引发的思考(简单版)

最近老板让我按照设计图写一个页面&#xff0c;不嫌丢人的说这是我第一次写页面&#xff0c;哈哈哈。 然后设计图里有一个这样的需求&#xff0c;感觉挺有意思的。 为什么感觉有意思呢&#xff0c;因为这个列表它前面是图片&#xff0c;然后单行和双行的不一样。&#xff08;请…

电子技术——稳定性问题

电子技术——稳定性问题 本节我们讨论稳定性问题。 反馈放大器的传递函数 在考虑频率响应的情况下&#xff0c;开环增益 AAA 通常是关于复频率 sss 的函数 。那么 A(s)A(s)A(s) 就称为 开环传递函数 。同时&#xff0c; β\betaβ 也可能是一个关于复频率 sss 的函数。我们称…